2011-10-12 197 views
8

我有以下類流利的API(WithRequiredDependent和WithRequiredPrincipal):EF代碼優先 -

public class User 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public Couple Couple { get; set; } 
} 

public class Couple 
{ 
    public Guid Id { get; set; } 
    public User Groom { get; set; } 
    public User Bride { get; set; } 
} 

要點:

  1. BrideGroom屬性是必需的
  2. 一-to一對一關係
  3. User類,它是Couple需要

的DbContext在OnModelCreating

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredPrincipal(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

但我不能要求!

所有的Fileds與數據庫中的空!

我如何在數據庫中的字段不爲空? 如果可能的話使用API​​ Flient

回答

5

它應該是這樣的:

modelBuilder.Entity<User>().HasRequired(u => u.Couple).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Bride).WithRequiredDependent(); 
modelBuilder.Entity<Couple>().HasRequired(u => u.Groom).WithRequiredDependent(); 

WithRequiredDependent如何運作:配置要需要的關係:沒有要求在關係的另一端的導航屬性。正在配置的實體類型將是依賴項,並且包含主體的外鍵。關係目標的實體 將成爲關係中的主體。


含義:讓我們考慮您的第一行代碼在這裏。它創建被配置在實體的外鍵(用戶)使它依賴,使關係的另一面(夫婦主要


重要:唐你認爲你想要的配置會產生僵局嗎?我沒有測試過上面的代碼,但是這個配置對我來說似乎是一個僵局,所以我不確定EF是否允許你創建它。用戶必須需要一對情侶,而且情侶必須需要同一個用戶。