在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'。
答案 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
的更多信息