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

NetCore 最近很火热。笔者想把自己以前的旧项目迁移到NetCore平台。

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


 引入包  Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.SqlServer

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


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


很简单,但有时会报错:Build failed.

这个是因为整个项目编译不成功导致的,要确保项目能正常编译成功

再 CodeFirst一下 Add-Migration Init -c  EcolDbContext
 -c 是指定 DbContext 根据自身情况可以不加
生成的项目目录如下

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




在项目数据库里执行一下语句。
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

其他修改也一样


希望对大家有帮助,谢谢观看




原文地址:https://www.cnblogs.com/aion111/p/9798933.html