我试图找出如何在EF中完成这项工作。我有两个实体Employee
和User
。我需要这样做,以便User
具有Employee
的可选映射。如果有映射,那么它将是1:1。
基本上这个系统可以由员工和外部供应商访问,但我想要一个表来管理登录:Users
。
如何使用流体配置在EF中定义此实际情况?
答案 0 :(得分:3)
您只需设置简单的流畅配置:
modelBuilder.Entity<User>()
.HasOptional(u => u.Employee)
.WithRequired(e => e.User);
或以相反的顺序:
modelBuilder.Entity<Employee>()
.HasRequired(e => e.User)
.WithOptional(u => u.Employee);
EF将使用Employess的PK作为用户的FK - 这是EF正确使用一对一关系的强制要求。在数据注释的情况下,使用ForeignKey
属性将其与User
导航属性配对,足以标记员工的PK:
public class Employee {
[Key, ForeignKey("User")]
public int Id { get; set; }
public virtual User User { get; set; }
}
答案 1 :(得分:1)
public class User
{
...
public virtual Employee Employee { get; set; }
}
This tutorial可能会有所帮助。