我正在使用实体框架首先使用代码开发ASP.NET MVC Web应用程序。
我面临的问题是我使用数据迁移对一些表进行了重命名,显然一切都很顺利我甚至看到数据库中的表名已更新。
但是当我创建一个新的数据迁移时,它总是采用表的原始名称(xxxxes),而不是最新的(xxxxs),我必须手动更改迁移脚本以避免错误:
无法找到对象“dbo.xxxxs”,因为它不存在或您没有权限。
更糟糕的是,索引控制器现在失败了,因为当它尝试ToList()方法时会抛出以下错误:
EntityFramework.SqlServer.dll中发生了'System.Data.Entity.Core.EntityCommandExecutionException'类型的异常但未在用户代码中处理 附加信息:执行命令定义时发生错误。有关详细信息,请参阅内部异常。
内心细节:
{“无效的对象名称'dbo.xxxxs'。”}
我查看了整个项目,试图找到这个表仍然用原始名称引用的地方,但我什么也没找到。
有关如何解决这个问题的想法吗?
修改
我做了什么,也许这里的一切都是破坏的,就是创建这样的数据迁移并运行它。
public partial class Update5 : DbMigration
{
public override void Up()
{
RenameTable("xxxxes", "xxxxs");
}
public override void Down()
{
}
}
我已经看到Down()方法应该有相反的动作,我没有添加......
答案 0 :(得分:1)
您可以尝试通过数据注释添加表名。 请检查此link
默认情况下,EF将使用您的类的名称来命名表。如果更改了表名,EF将不知道哪个类与哪个表对应。因此,如果您在类上方添加注释的表名,EF将知道要查找的内容。