我似乎无法在流畅的 API 中找到一对多的关系语法。
例如,我有两个表如下
用户
Id
Name
用户历史
Id
UserId
Date
在类(class)中,我有以下内容
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; }
}
我尝试了以下方法,但我不确定它是否真的正确。
modelBuilder.Entity<User>()
.HasRequired(w => w.Histories)
.WithMany();
modelBuilder.Entity<User>()
.HasMany(f => f.Histories)
.WithOptional()
.HasForeignKey(f => f.UserId);
一对多关系的正确语法是什么?
从技术上讲,我可以通过添加一个新表将其分解为多对多,但我不想引入另一个表。
最佳答案
在您的模型中,User
实体 有很多 Histories
与 每个历史都有一个 必填 User
和关系有 一个 外键 调用UserId
:
modelBuilder.Entity<User>()
.HasMany(u => u.Histories)
.WithRequired()
.HasForeignKey(h => h.UserId);
(关系必须是必需的(不是可选的),因为外键属性
UserId
不可为空。)
关于entity-framework-5 - Fluent API - 一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295705/