1

我试图弄清楚如何在 EF 中进行这项工作。我有两个实体EmployeeUser. 我需要使它User具有到Employee. 如果有映射,那么它将是 1:1。

基本上这个系统可以被员工和外部供应商访问,但我想要一个表来管理登录:Users.

如何在具有流体配置的 EF 中定义这种关系?

4

2 回答 2

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 正确使用一对一关系的强制性要求。在 Data 注释的情况下,使用与导航ForeignKey属性配对的属性来标记 Employee 的 PK 就足够了:User

public class Employee {
    [Key, ForeignKey("User")]
    public int Id { get; set; }

    public virtual User User { get; set; }
}
于 2012-08-12T08:27:34.323 回答
1
public class User
{
    ...
    public virtual Employee Employee { get; set; }
}

本教程可能会有所帮助。

于 2012-08-12T06:57:57.317 回答