2011-10-12 16 views
8

Mam następujące klasy:EF Code First - Fluent API (WithRequiredDependent i WithRequiredPrincipal)

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; } 
} 

Ważne punkty:

  1. Bride i Groom właściwości są wymagane
  2. One -to-one relationship
  3. W klasie User, to Couple wymagane

DbContext w 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(); 

Ale nie mogę być wymagane!

Wszystkie pliki mają wartość null w bazie danych !.

Jak uzyskać, że pola w bazie danych nie są puste? Jeśli to możliwe, użyj interfejsu API Flient.

Odpowiedz

5

To powinno być tak:

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

Jak WithRequiredDependent Works: Konfiguracja relacji do: konieczna bez właściwości nawigacji po drugiej stronie relacji. Konfigurowany typ jednostki będzie zależny i zawiera klucz obcy dla zleceniodawcy. Podmiot typu, że cele relacji będą głównymi w relacji.


Znaczenie: Rozważmy swój pierwszy wiersz kodu tutaj. Tworzy klucza obcego w jednostce jest skonfigurowana (użytkownika) czyni go Dependent i co drugą część relacji (Para) Principal


Ważne: Don Myślisz, że konfiguracja, której pragniesz, spowoduje impas? Nie przetestowałem powyższego kodu, ale ta konfiguracja wydaje mi się impasem, więc nie jestem pewien, czy EF pozwoli ci go utworzyć. Użytkownik musi potrzebować pary, a para musi potrzebować tego samego użytkownika, jak sądzę.

Powiązane problemy