2011-04-14 23 views
0

考慮下面的示例模型:如何使用Model-First方法在EF4中創建1x0..1關聯?

  • 具有0..1用戶
  • 用戶已經1人

嘗試1:

  • 我從拖了一個協會到User在模型設計器上。
  • 我固定的基數滿足我的需求(默認爲1×N個)
  • 我從模型生成的DDL

問題:

  • 輸出User表具有Person_id柱沒有獨特的限制。也就是說,這不是許多用戶可以引用同一個人的1x1關係。一定有什麼東西錯在這裏

嘗試2:

  • 拖從人的關聯用戶的模型設計。
  • 固定基數,以滿足我的需求(默認爲1×N個)
  • 選擇聯想,並點擊屬性窗口中的Referential Constraint按鈕編輯協會
  • 選定人員是主要的和用戶是從屬鍵入
  • 選擇Principal Key是Id和Dependent Property也成爲ID(我讀的地方,我應該使用這兩種類型相同的密鑰)

問題:

運行此代碼:

using (var context = new Locadora()) 
{ 
    User user = new User(); 
    user.PasswordHash = "hash"; 
    user.Pessoa = new Person(); 
    user.Pessoa.Nome = "André"; 

    context.Usuários.AddObject(user); 

    context.SaveChanges(); 
} 
  • 的SaveChanges觸發此異常:

在ReferentialConstraint從屬屬性被映射到一個存儲生成的列。專欄:'Id'

所以我現在沒有選擇了。我不知道如何在實體框架中實現1x1和1x0..1的關係。

我該怎麼做?

回答

1

第一次嘗試無法工作,因爲當前EF版本根本不支持唯一鍵。第二種方法不起作用,因爲您的依賴實體不能將自動生成的密鑰= StoreGeneratedPattern必須設置爲None

+0

你今天節省了好幾次。謝謝 – 2011-04-14 21:27:56