我正在尝试将AgentId
的名称添加到我的ASP MVC站点。此表没有主键,但它使用外键将其映射到另一个表BankMasterList
。一个代理可能与多个银行合作,因此代理ID通常会在AgentId
表中出现多次。
但是,每次尝试此操作时,Visual Studio都会将表AgentId
的第一列(列名恰好与表名AgentId
)分类为主键。
如果我删除了主键名称并点击了save / build,则Visual Studio会继续删除.cs
文本模板转换工具包文件中包含的每个.tt
模型。显然,该项目在此之后爆炸,因为所有控制器现在都使用无效的命名空间。
任何人都可以就发生的事情提出任何建议或解释吗?
以下是AgentId
表的SQL Server Management Studio的屏幕截图:
以下是Visual Studio项目中.edmx
文件中描述的表:
答案 0 :(得分:2)
如果表格中找不到实际的主键,EDMX设计人员会选择所有不可为空的列作为“替代”主键。
“真实”表格(不仅仅是临时的,例如批量加载)应该总是有一个主键!如果AgentID
和ID
都不能单独用作主键,我会尝试查看两者(AgentID, ID
)的组合是否是您的主键;如果这也不起作用,那么我建议添加一个单独的代理列(INT IDENTITY
)作为主键。您应始终能够唯一且可靠地识别任何表中的每一行。