0

我試圖通過名稱AgentId添加一個表到我的ASP MVC站點。此表沒有主鍵,但它確實使用外鍵將其映射到另一個表BankMasterList。一位代理人可能會與多家銀行合作,因此代理商ID通常會在AgentId表中不止一次出現。ASP MVC3添加數據庫中不存在的主鍵

但是,每次我嘗試此操作時,Visual Studio都會將表AgentId的第一列(列名恰好與表:AgentId)分類爲主鍵。

如果我刪除主鍵名稱並點擊保存/編譯,Visual Studio將繼續刪除.tt文本模板轉換工具包文件中包含的每個.cs模型。顯然,該項目之後爆炸,因爲所有的控制器現在使用無效的名稱空間。

任何人都可以提供任何建議或解釋到底是怎麼回事?

下面是從SQL Server Management Studio中的屏幕截圖的AgentId表:

enter image description here

這裏是在Visual Studio項目在.edmx文件出的表格:

enter image description here

+0

AgentId是* not *主鍵? –

+2

如果在表上找不到實際的主鍵,則EDMX設計器將選取所有不可爲空的列**作爲主鍵。儘管表**應該總是有**主鍵! –

+0

@Robert:'AgentId'(列名)不是主鍵。 – NealR

回答

2

EDMX設計師將挑選表中所有不可爲空的列作爲「替代」主鍵y如果它無法在表上找到實際的主鍵。

「真正的」表(不只是臨時的,例如批量加載)應該總是有一個主鍵,但!如果AgentIDID都不能用作主鍵,我會嘗試查看兩個組合(AgentID, ID)是否可以成爲主鍵;如果這也不起作用,那麼我建議添加一個單獨的代理列(INT IDENTITY)作爲主鍵。您應該始終能夠唯一可靠地識別任何表格的每一行。

相關問題