NetCore 中 EFcore的DbFirst和CodeFirst混合 使用注意

NetCore 最近很火热。笔者想把本身之前的旧项目迁移到NetCore平台。sql

 先用EFcore的DBFirst根据数据库建立实体类,而后加入数据库版本控制功能也就是EFcore的CodeFirst部分。数据库


 

 引入包  Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.SqlServerui

Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer


这个是由于整个项目编译不成功致使的,要确保项目能正常编译成功

Add-Migration Init -c  EcolDbContext

先 DBFirst一下
Scaffold-DbContext "Data Source=(localdb)\v11.0;Initial Catalog=master;Integrated Security=True;" -OutputDir Models


很简单,但有时会报错:Build failed.
再 CodeFirst一下
 -c 是指定 DbContext 根据自身状况能够不加
生成的项目目录以下

20181016075837_Init.cs 是指当时生成的日期Add-Migration Init的 Init组合而成 spa




在项目数据库里执行一下语句。
CREATE TABLE [dbo].[__EFMigrationsHistory] (
    [MigrationId]    NVARCHAR (150) NOT NULL,
    [ProductVersion] NVARCHAR (32)  NOT NULL
);

手动插入数据
insert into ( MigrationId ,ProductVersion) values ('20181016075837_Init' ,'init')

这样之后就能够用 CodeFirst模式升级数据库了
如今简单演示下如何添加表

新建类TestTableData
1   public class TestAddData
2     {
3         public long Id { get; set; }
4 
5         public string Name { get; set; }
6     }
在DBContext类里加
 
 public virtual DbSet<TestAddData> TestAddData { get; set; }

执行 包管理命令版本控制

Add-Migration AddTable -c  EcolDbContext
update-database   -Context  EcolDbContext

 

其余修改也同样code


 

但愿对你们有帮助,谢谢观看blog

相关文章
相关标签/搜索