2013-01-12 8 views
10

Nie mogę znaleźć składni relacji jeden do wielu w płynnym interfejsie API.Fluent API - jeden do wielu

Jako przykład mam dwie tabele poniżej

użytkownika

Id 
Name 

UserHistory

Id 
UserId 
Date 

W klasach Mam następujący

public class User 
{ 
    public int Id { get; set; } 
    public virtual ICollection<UserHistory> Histories { get; set; } 
} 

public class UserHistory 
{ 
    public int Id { get; set; } 
    public int UserId { get; set; } 
    public DateTime Date { get; set; } 
} 

Próbowałem następujące rzeczy, ale nie jestem pewien, czy jest to rzeczywiście prawidłowe.

modelBuilder.Entity<User>() 
     .HasRequired(w => w.Histories) 
     .WithMany(); 

modelBuilder.Entity<User>() 
     .HasMany(f => f.Histories) 
     .WithOptional() 
     .HasForeignKey(f => f.UserId); 

Jaka jest prawidłowa składnia relacji jeden-do-wielu?

Technicznie mógłbym podzielić go na wiele do wielu, dodając nowy stół, ale nie chciałem wprowadzać kolejnego stołu.

Odpowiedz

24

W modelu User jednostka ma wieleHistoriesz każdą historię mającą wymaganeUser i relacji ma się obcego klucz nazywa UserId:

modelBuilder.Entity<User>() 
    .HasMany(u => u.Histories) 
    .WithRequired() 
    .HasForeignKey(h => h.UserId); 

(The relacje musi być wymagany (nie opcjonalny), ponieważ właściwość klucza obcego UserId nie jest nullab le.)

+1

Jeśli UserHistory UserId był zerowalny, to byłby WithOptional()? – fes

+1

@fes: Tak, racja. – Slauma

Powiązane problemy