EF代码优先迁移-不检测更改

本文关键字:检测 迁移 代码 EF | 更新日期: 2023-09-27 18:04:13

前言:在我的数据库表我有两个字段:(字符串)(FK)UserPayoffData_UserName和(int) UserPayoffDataUserName。我犯了一个错误,在现实中,我希望它只是一个属性,(字符串)(FK)UserPayoffData_UserName,但称为(字符串)(FK)UserPayoffDataUserName,我的第二个字段((int) UserPayoffDataUserName)将消失。

现在,在我的模型中,我有这个无效的属性:

public int UserPayoffDataUserName { get; set; }

所以我把它改为字符串(现在如果我要删除我的数据库并重新创建它,它将是一个外键):

public string UserPayoffDataUserName { get; set; }

现在我做了Add-migration mymigration,我所期望的是,迁移会以某种方式用正确命名的外键重命名上面的外键。但它什么也没做。我能做点什么吗?

EF代码优先迁移-不检测更改

如果我清楚地理解这一点,您需要删除mymigration或您从项目中拥有的任何其他旧迁移。它们应该在你的Migration folder中。如果您需要您的迁移,您将不得不创建新的迁移。然后根据需要更改类,比如属性命名和所有属性映射。然后构建解决方案,并运行Update-Database -Force

请记住,因为你正在使用EF Code First,你可以删除你的数据库,从你的Server Explorer和你的App_Data文件夹(不要错过这一点,从服务器资源管理器中删除意味着什么,如果你不这样做在这里),这没什么大不了的,因为它可以在瞬间创建与`Update-Database -Verbose

通过执行Add-Migration mymigration,您只是创建了将在执行迁移时使用的脚手架代码文件。

所以你的数据库不会自动改变。你必须主动出击!

通过使用update-database -TargetMigration mymigration,这将执行您所做并保存到mymigration文件

的所有更改。