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

 

其他修改也一樣


 

希望對大家有幫助,謝謝觀看



 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM