日期:2014-05-17  浏览次数:20496 次

CodeFirst自动数据迁移的问题
我在每个实体类都添加了(这个dbo前缀我是被逼添加的,最后会说到)
[Table("t_News", Schema = "dbo")]

但是CreateDatabaseIfNotExists的时候自动新建的表却没有dbo.这个前缀这个格式。

这个也不是重点问题。。问题是,为了以后的部署,我把CreateDatabaseIfNotExists注释了,换成网上说的MigrateDatabaseToLatestVersion。一切都编译成功,也用Enable-Migrations和Add-Migration生成了对应的几个文件。也写了
AutomaticMigrationsEnabled = true;
            AutomaticMigrationDataLossAllowed = true;


然后,我把数据库drop了,测试一下。结果,在初次运行的时候,报了一个错误,说myTable.__migrationhistory表不存在。myTable是我的数据库名字。
看了一下数据库,发觉所有表都自动加了dbo的前缀,包括那个__migrationhistory,
所以myTable.__migrationhistory肯定是不存在的,因为他应该叫myTable.dbo.__migrationhistory。



我想表达的问题是,如何让系统不要去检测myTable.__migrationhistory,而是检测myTable.dbo.__migrationhistory。
或者,Enable-Migrations和Add-Migration的时候,不要自动给我的表添加dbo前缀。其实并不是我想给它添加dbo,而是这2个方法会自定给表都带上dbo前缀,我只能顺着它。
Entity?Framework CodeFirst 数据迁移

------解决方案--------------------
http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/295d868f-97b0-47a4-a5bf-04c8ee085bff