对于我的生活,我无法摆脱这个错误信息。我几乎尝试了所有我能做的事。
MyDBContext.cs
public MyDBContext() : base("ConnStr_Dev")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDBContext, DbMigrationsConfiguration<MyDBContext>>());
//Database.SetInitializer<MyDBContext>(null);
base.OnModelCreating(modelBuilder);
}
GenericRepository.cs
public void Insert(T obj)
{
table.Add(obj); //this is where it throws the error, inserting first time.
}
以不同的组合尝试所有这些
启用 - 迁移-EnableAutomaticMigrations -Force
添加迁移初始-IgnoreChanges
更新的数据库的
我尝试删除迁移表,删除整个数据库,一切。
任何移民专家都可以吗?
编辑:DAL包含GenericRepository和上下文类。
答案 0 :(得分:3)
我也遇到了这个错误。我添加了迁移,然后做了我认为是微不足道的改变。
此属性:迁移中的IMigrationMetadata.Target
不是随机的。它是根据迁移完成时模型的状态计算的。 (这可能过于简单了。)
因此,如果您进行其他更改,则看起来还有其他待处理的更改需要进行其他迁移。
就我而言,由于更改尚未提交给源代码管理,因此修复方法是删除并重新添加迁移。需要一段时间来找出原因,因为错误信息不清楚,除非您已经知道是什么导致了它。但我所学到的教训(对EF来说相对较新)是对模型的更改需要新的迁移或重新进行我正在进行的迁移。
答案 1 :(得分:2)
Migrations
文件夹dbo.__MigrationHistory
表Package Manager Console
和Enable-Migrations
Add-Migration Initial
Update-Database
答案 2 :(得分:1)
您只需对一个或多个实体类进行更改。无论是添加新属性,更改了特定属性的数据类型,还是只添加了新的实体类,在所有这些情况下,您确实需要添加新的迁移。
看到您已经尝试过,请确保在Package Manager控制台中执行Add-Migration命令时选择了包含DBContext类的项目,配置类和迁移文件夹。此外,您将特定的连接字符串传递给 MyDBContext 类的基类(DbContext)。确保您还要升级和更新正确的数据库。
知道您可以对特定数据库执行Add-Migration命令和Update命令:
示例摘录:
Add-Migration AddProperty1 -ConnectionString "Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabaseCatablog;Connect Timeout=30;User ID=MyUser;Password=mypassword12345" -ConnectionProviderName "System.Data.SqlClient" -Verbose
和
Update-Database -ConnectionString "Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabaseCatablog;Connect Timeout=30;User ID=MyUser;Password=mypassword12345" -ConnectionProviderName "System.Data.SqlClient" -Verbose
希望这有帮助。
答案 3 :(得分:0)
在我的情况下,通过添加DatabaseInitializerForType ... appSetting来解决错误。
<appSettings>
<add key="DatabaseInitializerForType EasyEntity.EasyContext, EasyEntity" value="EasyEntity.EasyInitializer, EasyEntity" />
答案 4 :(得分:0)
这个错误在我的情况下很奇怪,我忘了取消注意CONNECTIONSTRING设置,意味着有一个正确的连接字符串解决了这个错误。希望能帮助到你!