【发布时间】:2013-03-22 17:28:22
【问题描述】:
我正在尝试将名称为 AgentId 的表添加到我的 ASP MVC 站点。该表没有主键,但它使用外键将其映射到另一个表BankMasterList。一个代理可能与多家银行合作,因此代理 ID 通常会在AgentId 表中出现多次。
但是,每次我尝试这样做时,Visual Studio 都会将表 AgentId 的第一列(列名恰好与表同名:AgentId)分类为主键。
如果我删除主键指定并点击保存/构建,Visual Studio 将继续删除包含在 .ttText 模板转换工具包文件中的每个 .cs 模型。显然,在此之后项目爆炸了,因为所有控制器现在都使用无效的命名空间。
任何人都可以就发生的事情提供任何建议或解释吗?
这是来自AgentId 表的 SQL Server Management Studio 的屏幕截图:
这是 Visual Studio 项目中.edmx 文件中描述的表格:
【问题讨论】:
-
AgentId 不是主键?
-
如果 EDMX 设计器在表上找不到实际的主键,它将选择 所有不可为空的列作为主键。但是,表应该总是有一个主键!
-
@Robert:
AgentId(列名)不是主键。 -
@marc:由于我们将有重复的代理 ID 和银行 ID,因此我们在没有主键的情况下离开了表格,尽管该项目仍处于概念验证阶段。当我从
AgentId列中删除主键时,删除所有当前模型的项目该怎么办? -
在任何 real 表上都应该有一个正确的主键。总是。如果
AgentID和ID(也不是两者的组合)都不能作为主键 - 那么您应该添加一个单独的代理列(INT IDENTITY)作为主键。
标签: asp.net-mvc asp.net-mvc-3 visual-studio-2010 entity-framework edmx