2013-01-12 32 views
10

Tôi dường như không thể tìm thấy cú pháp quan hệ một-nhiều trong API thông thạo.API thông thạo - một đến nhiều

Như một ví dụ tôi có hai bảng như sau

tài

Id 
Name 

UserHistory

Id 
UserId 
Date 

Trong lớp tôi đã sau

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

Tôi đã thử những điều sau đây nhưng tôi không chắc liệu nó có thực sự đúng hay không.

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

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

Cú pháp chính xác cho mối quan hệ một-nhiều là gì?

Về mặt kỹ thuật tôi có thể chia nhỏ thành nhiều người bằng cách thêm một bảng mới nhưng tôi không muốn giới thiệu một bảng khác.

Trả lời

24

Trong mô hình của bạn một thực thể Usercó nhiềuHistoriesvới mỗi lịch sử có một cầnUser và mối quan hệ một nước ngoài chủ chốt gọi UserId:

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

(Mối quan hệ phải được yêu cầu (không bắt buộc) vì thuộc tính khóa ngoài UserId không phải là nullab le.)

+1

Nếu UserI UserHistory là nullable, thì nó sẽ là WithOptional()? – fes

+1

@fes: Có, đúng vậy. – Slauma

Các vấn đề liên quan