Entity Framework中DbContext首次加载OnModelCreating会检查__MigrationHistory表,作为使用Code Frist编程模式;
而实际先有数据库时,这种检测就是多余的了,所以需要屏蔽。不同的版本屏蔽的写法略有不同
- 在EF 4.1之前可以使用在OnModelCreating函数总加入下面语句来屏蔽这种检测:
modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); - 而到4.3之后需要使用,上列语句以被MSDN明确表示过时,所以需要新的方式取代:
Database.SetInitializer<BooksContext>(null);
大家肯定对一条指令非常熟悉了,update-database,每次拿了新代码,基本上都要执行这条指令来同步一下数据库。以保证entity模型与数据库模型的一致性。那有没有偷懒的方法呢,这么问,答案当然是有了。 在项目运行开始的时候执行以下代码:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Configuration>());
当然对于EF的指令可不止这些,最常见的指令如下:
Enable-Migrations
Add-Migration <版本名>
Update-Database [-verbose]
Update-Database [-script]
Update-Database -SourceMigration:<源版本名> -TargetMigration:<目标版本名>
Update-Database -SourceMigration:$InitialDatabase -targetMigration:<目标版本名>