EF Code First之困擾


  Code First自動更新數據庫有幾種方法

  Code First什么都不做

Database.SetInitializer<ShopContext>(null);

  發布網站的話一般要在Application_Start方法里加上這句,發布后不需要Code First了。

  Code First總是重建數據庫並重設數據庫種子

Database.SetInitializer(new DropCreateDatabaseAlways<MyContext, DAL.Configuration>());

  Code First僅在模型更改時重建數據庫並重設數據庫種子

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext, DAL.Configuration>());

  可是這幾種在開發階段都不適合,因為我並不希望重建數據庫,只是想增量更新數據庫,於是又找到一種

  Code First增量更新數據庫並增量更新數據庫種子

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, DAL.Migrations.Configuration>());

  其中DAL.Migrations.Configuration如下

 1 public class Configuration : DbMigrationsConfiguration<MyContext>
 2     {
 3         public Configuration()
 4         {
 5             //允許代碼自動遷移數據庫
 6             AutomaticMigrationsEnabled = true;
 7             //允許自動遷移時數據丟失(如刪除列)
 8             AutomaticMigrationDataLossAllowed = true;
 9         }
10 
11         protected override void Seed(MyContext context)
12         {
13             context.Account.AddOrUpdate(o => o.AccountName, new SH_Account
14             {
15                 AccountName = "admin",
16                 NickName = "管理員",
17                 AccountPwd = "123456",
18                 Email = "4564589@qq.com",
19                 Phone = "13289463547"
20             });
21          }
22     }

  可是,我發現DbMigrationsConfiguration依然有不少問題,比如修改字符串長度限制的話執行增量更新數據庫是會報錯的,去除帶外鍵的字段加帶外鍵的字段也容易報錯,並且一旦出錯基本就只能刪除數據庫重新執行了,也就是說DbMigrationsConfiguration並不是很可靠,誰知道怎么解決這個困擾呢。。。


免責聲明!

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



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