实体框架代码第一关系

时间:2012-08-12 06:51:51

标签: entity-framework

我试图找出如何在EF中完成这项工作。我有两个实体EmployeeUser。我需要这样做,以便User具有Employee的可选映射。如果有映射,那么它将是1:1。

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

如何使用流体配置在EF中定义此实际情况?

2 个答案:

答案 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可能会有所帮助。