entity-framework-5 - Fluent API - 一对多

标签 entity-framework-5

我似乎无法在流畅的 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/

相关文章:

c# - 如何使用 Entity Framework 5 确保幂等数据库插入?

c# - 等效于 DbContext 上的 ObjectContext.AddObject(entityName, entity)

c# - Entity Framework 5 - 仅选择实体 IsActive 的实体

asp.net-mvc-4 - Entity Framework 将无法识别webpage_UsersInRoles

c# - 是否可以在调用 DbContext.SaveChanges 之前查询 Entity Framework ?

ef-code-first - Entity Framework : I set the foreign key, SaveChanges 然后访问导航属性,但它不会加载相关实体。为什么不?

c# - 转换为值类型 'Int32' 失败,因为具体化值为 null

c# - Entity Framework - COUNT 而不是 SELECT

c# - 使用 MVC5 更新 EF5 中的 Db

c# - 通过复选框以编程方式为 MVC 4 中的用户分配角色