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的新建数据库的完成了

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


posted @ 2018-04-27 16:02  网海里的一滴水  阅读(403)  评论(0)    收藏  举报