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

相關文章
相關標籤/搜索