最近公司的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; } } }
这个时候,我们新建一个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; } } }
在这里 我们将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(); }
好了 这步完成后,我们开始迁移数据库
第一建新库的时候,打开程序包管理控制台
add-migration init (新建数据的时候使用)
新建的时候才使用add-migration init
这个时候,项目里面会出现migrations 文件夹了
update-database 这个命令不多说
这样CodeFrist的新建数据库的完成了
本人为了方便自己日后查阅,写此文章,请勿转载!