流畅的API - 一对多

fes*_*fes 13 entity-framework-5

我似乎无法在流畅的API中找到一对多的关系语法.

作为一个例子,我有两个表如下

用户

Id
Name
Run Code Online (Sandbox Code Playgroud)

UserHistory

Id
UserId
Date
Run Code Online (Sandbox Code Playgroud)

在课程中,我有以下内容

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; }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过以下但我不确定它是否真的正确.

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

modelBuilder.Entity<User>()
       .HasMany(f => f.Histories)
       .WithOptional()
       .HasForeignKey(f => f.UserId);
Run Code Online (Sandbox Code Playgroud)

一对多关系的正确语法是什么?

从技术上讲,我可以通过添加新表将其分解为多对多,但我不想引入另一个表.

Sla*_*uma 27

在您的模型中,User实体有许多 Histories ,每个历史记录都有一个必需的, User并且该关系具有一个名为的外键UserId:

modelBuilder.Entity<User>()
   .HasMany(u => u.Histories)
   .WithRequired()
   .HasForeignKey(h => h.UserId);
Run Code Online (Sandbox Code Playgroud)

(必须要求关系(非可选),因为外键属性UserId不可为空.)