我试图弄清楚如何在 EF 中进行这项工作。我有两个实体Employee
和User
. 我需要使它User
具有到Employee
. 如果有映射,那么它将是 1:1。
基本上这个系统可以被员工和外部供应商访问,但我想要一个表来管理登录:Users
.
如何在具有流体配置的 EF 中定义这种关系?
我试图弄清楚如何在 EF 中进行这项工作。我有两个实体Employee
和User
. 我需要使它User
具有到Employee
. 如果有映射,那么它将是 1:1。
基本上这个系统可以被员工和外部供应商访问,但我想要一个表来管理登录:Users
.
如何在具有流体配置的 EF 中定义这种关系?
您只需要设置简单的流利配置:
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 正确使用一对一关系的强制性要求。在 Data 注释的情况下,使用与导航ForeignKey
属性配对的属性来标记 Employee 的 PK 就足够了:User
public class Employee {
[Key, ForeignKey("User")]
public int Id { get; set; }
public virtual User User { get; set; }
}
public class User
{
...
public virtual Employee Employee { get; set; }
}
本教程可能会有所帮助。