2013-07-05 17 views
0

在EF 5.0中定義具有身份的PK的正確方法是什麼(代碼優先)?在實體框架中定義具有身份的PK的正確方法

我開始使用[Key]這似乎是創建一個身份的關鍵,但我已經看到了很多的使用

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

不要緊,無論哪種方式的例子?第二種選擇更好,因爲它更具描述性等。

感謝

回答

0

答案很簡單:

[Key]本身是不夠的,你甚至不需要它,如果你遵循正確的約定。另一方面,[Key]在語義上等於[Key(DatabaseGeneratedOption.Identity)],它們是相同的,它們等於骨頭,沒有任何區別。

龍答:

  • 有你在哪裏被迫使用 [Key(DatabaseGeneratedOption.Identity)]的情況,這時你 主鍵是Guid因爲你需要讓數據庫和EF 知道它應該爲此生成一個值,他們只知道要做 ,所以當主鍵是int時。當主鍵是 由用戶插入顯式
  • [Key(DatabaseGeneratedOption.None)]被使用,例如主鍵是 的社會安全號碼(分貝不應該產生這一個)
  • 最後一種情況,[Key(DatabaseGeneratedOption.Computed)]只有已經有在表是 計算,一列使用,如當你有一個表 一個全名列通過組合名字計算和姓氏列, 此選項必須來當你映射到 現有數據庫使用

本信息的大多數取自於書Programming Entity Framework : Code First

+0

謝謝!很好的解釋。 – ASG