如何使用流畅的api在EF 6中设置外键

时间:2016-03-03 00:35:27

标签: c# foreign-keys entity-framework-6

在EF 6中,如何指定实体的属性是外键引用,如果它是另一个实体中的父实体,则无法删除被引用的实体?

这是我的班级:

public class User
{
    [Key]
    public int id { get; set; }
    public int parentId { get; set; }
    [ForeignKey("parentId")]
    public virtual User user { get; set; }
}

在上面的课程中,parentId是对另一个User的引用。

这是我目前的代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>().HasKey(x => x.id);
    modelBuilder.Entity<User>().HasOptional<User>(x => x.user);
    base.OnModelCreating(modelBuilder);
}

我收到以下错误:

  

在模型生成期间检测到一个或多个验证错误:

     

DataService.Context.User_user ::多重性与   关系中角色'User_user_Target'中的引用约束   'User_user'。因为依赖角色中的所有属性都是   不可为空,主要角色的多样性必须为'1'。

1 个答案:

答案 0 :(得分:1)

Maped到导航属性,您应该将User类型的虚拟属性添加到map:

public class User 
{
 [Key] public int id { get; set; }     
 public int UserId { get; set; }
 public virtual User User{get;set;}
}
// ...
 modelBuilder.Entity<User>().HasOptional<User>(x=> x.User);

了解有关关系here

的更多信息