ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移


最近公司的WINDOWS服务到期了,公司网站采用MVC5。

目前,都流行跨平台、开源。忽然冒出将公司网站实现跨平台的想法,网上搜索发现,.NET Core支持跨平台,于是,找度娘。

发现APS.NET MVC和ASP.NET CORE是有很大区别,所以决定挑战一下。由于我写的公司网站,是采用MVC5+EFCodeFrist+SqlServer写的。

哪么,我也就才用CORE2.0+EFCodeFrist+MySQL(服务器买的阿里云Linux),看了不少的博客,也做了不少的Dome,网上的很多Dome都是写得不完整,

踩坑不少。为了让我这孤家老人不用在找度娘,写下来让自己能记住踩了多少坑。废话不说上干货。

网上哪种直接在ASP.NET CORE MVC中直接DbContext我不想做,为了解耦,我个人觉得还是要采用三层架构。

新建一个Core Mvc项目CoreEFDome

完成以后,就是包涵MVC的项目

再添加一个EntityModels类库项目

在新建的EntityModels上面NuGet添加几个包

1、Microsoft.EntityFrameworkCore(这个包已经和EF6.0大不同了)

2、Pomelo.EntityFrameworkCore.MySql(我用的Linux主机,用的MySQL的数据库)

装完以后如下

这一步网上很坑啊好多人说还要在UI装,其实不需要(这里坑得我不要不要的)

剩下来的就简单了,当然是建一个Entity实体,随便建一个吧,就叫User.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;

namespace EntityModels
{
    public class User
    {
        [Key]
        public int ID { get; set; }
        [StringLength(200)]
        public string Name { get; set; }
        [StringLength(100)]
        public string Account { get; set; }
        [StringLength(100)]
        public string Password { get; set; }
    }
}
View Code

  

这个时候,我们新建一个CoreEF_Db.cs

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;

namespace EntityModels
{
    public class CoreEF_Db:DbContext
    {
        public CoreEF_Db(DbContextOptions<CoreEF_Db> options) : base(options)
        {

        }
        public DbSet<User> User { get; set; }
    }
}
View Code

在这里我们将Entity的实体建好了,我在网上看着别人的博客,看到这里很疑惑,数据连接字符串呢,放在那里?踩过后,才知道人家的博客没写完全或者是直接跳到后面说的不清楚,最后才知道在WEB层的Startup.cs

写在这里,添加你的数据连接(这步网上很多,有反射模式的,有直接写死得),我个人觉得可配置的反射模式还不错,哪么就找WEB里面配置文件appsetting.json

我这里用的MySQL的

"MySQLConnection": "Data Source=服务器地址;Database=CoreEF_Db;User ID=账号;Password=密码;pooling=true;CharSet=utf8;port=3306;sslmode=none"这里不说了

这个时候,我们就要这个写到Startup.cs里面

  public void ConfigureServices(IServiceCollection services)
        {
            var con = Configuration.GetConnectionString("MySQLConnection");//读取连接字符串
            services.AddDbContext<CoreEF_Db>(opt=>opt.UseMySql(con));//加载Dbcontext
            services.AddMvc();
        }
View Code

好了这步完成后,我们开始迁移数据库

第一建新库的时候,打开程序包管理控制台

add-migration init   (新建数据的时候使用)


新建的时候才使用add-migration init

这个时候,项目里面会出现migrations 文件夹了


update-database这个命令不多说

这样CodeFrist的新建数据库的完成了

本人为了方便自己日后查阅,写此文章,请勿转载!


			

                        优质内容筛选与推荐>>
1、软件介绍
2、css设置透明层
3、VS 添加链接文件 好容易忘记, 备注一下。
4、Nginx 负载均衡
5、bash里的特殊变量


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn