【发布时间】:2017-08-21 11:56:35
【问题描述】:
我有一个实体Relations,主键为RelId。我想把这个key改成RelationId
首先,我更改了 SSMS 中的列名: SQL Table
然后我使用(在 Visual Studio 中)Rename 将所有引用中的单词 RelId 更改为 RelationId。
我认为数据库和代码中的这种更改会说服我的代码使用新命名的主键,但是当我运行项目时会出现以下错误:
每个表中的列名必须是唯一的。表“dbo.Relations”中的列名“RelationId”被指定了多次。
当然,事实并非如此。在表中,RelationId 列仅存在一次。就像 EF5 正在尝试添加另一个具有相同名称的列。
谁能解释一下为什么会出现这个错误以及如何解决它?
全球.asax
protected void Application_Start()
{
//Database.SetInitializer<OefenfirmaContext>(new OefenfirmaDropCreateAndSeed());
Database.SetInitializer<OefenfirmaContext>(new OefenfirmaDropCreateAndSeed());
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
ModelBinders.Binders.Add(typeof(ShoppingCart), new CartModelBinder());
}
和 OefenfirmaDropCreateAndSeed 类(不再播种):
public class OefenfirmaDropCreateAndSeed :
MigrateDatabaseToLatestVersion<OefenfirmaContext, Migrations.Configuration>
{
}
【问题讨论】:
-
是否有一些代码可以重新创建 dbo.Relations 或尝试重命名列?
-
如果您想要 Code First,您应该先更改您的代码(而不是数据库),然后让迁移或初始化程序来更改数据库。现在您可能在模型和数据库之间存在某种不匹配。有没有流畅的配置代码?
-
不是真的,只是 global.asax 中的一个参考。我将编辑问题并发布全局 asax
-
@SteveGreene,不会流利,只是数据注释。
标签: sql-server entity-framework primary-key rename