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

时间:2022-12-27 03:02:07

 

    最近公司的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

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

 

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

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

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

再添加一个EntityModels类库项目

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

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

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

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

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

装完以后如下

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

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

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

ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移
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

 

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

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

ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移
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

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

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

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

 

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

 

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

 

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

 

我这里用的MySQL的

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

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

ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移
  public void ConfigureServices(IServiceCollection services)
        {
            var con = Configuration.GetConnectionString("MySQLConnection");//读取连接字符串
            services.AddDbContext<CoreEF_Db>(opt=>opt.UseMySql(con));//加载Dbcontext
            services.AddMvc();
        }
View Code

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

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

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

 

add-migration init   (新建数据的时候使用)
ASP.NET Core 2.0 EntityFromwork 三层架构数据迁移

 


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

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

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

 

 

 update-database 这个命令不多说 

 

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

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

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