我的公司目前正在重寫最近獲得的應用程序。我們選擇使用ASP.net mvc4來構建這個系統,並使用Entity Framework作爲我們的ORM。我們收購的公司以前的所有者非常堅定我們使用他們的舊數據庫,並且不改變它的任何內容,以便客戶可以在開發不同模塊的同時與舊系統同時使用我們的產品。SQL Server中主鍵和唯一索引之間的區別
我發現舊錶結構沒有主鍵,而是使用唯一索引作爲主鍵。現在,當使用實體框架時,我嘗試在結構中匹配它們的表,但由於EF生成的是主鍵而不是唯一索引,因此無法這樣做。
當我與前一位老闆聯繫並解釋它時,他告訴我「每張表中的唯一鍵是主鍵,它們是對方的同義詞。」
我對數據庫系統還比較陌生,所以我不確定這是否正確。任何人都可以澄清這一點?
時轉儲到SQL他的表生成:
-- ----------------------------
-- Indexes structure for table AT_APSRANCD
-- ----------------------------
CREATE UNIQUE INDEX [ac_key] ON [dbo].[AT_APSRANCD]
([AC_Analysis_category] ASC, [AC_ANALYSI_CODE] ASC)
WITH (IGNORE_DUP_KEY = ON)
GO
但是我的系統生成:
-- ----------------------------
-- Primary Key structure for table AT_APSRANCD
-- ----------------------------
ALTER TABLE [dbo].[AT_APSRANCD] ADD PRIMARY KEY ([AC_Analysis_category])
GO
編輯: 跟進問題,這是我將如何去設計模型爲了這?我只習慣使用將其定義爲主鍵的[Key]註釋,如果沒有它,EF將不會生成該表。 所以是這樣的:
[Table("AT_APSRANCD")]
public class Analysis
{
[Key]
public string AnalysisCode { get; set; }
public string AnalysisCategory { get; set; }
public string ShortName { get; set; }
public string LongName { get; set; }
}
檢查我的答案EF中的示例複合鍵。 – paqogomez
請注意其他區別:原始文件位於兩列之上,原稿忽略重複值。 –
如果數據庫已經存在,爲什麼不讓EF生成所有實體? – RobH