Entity framework EF 4.1一对一映射

Entity framework EF 4.1一对一映射,entity-framework,entity-framework-4.1,Entity Framework,Entity Framework 4.1,我有两张员工和职位表 雇员 雇员ID(PK) 位置ID(FK,可为空) 位置 位置ID(主键) 可以创建职位,也可以不分配职位。但是,在职员工需要一个职位。一个职位只能分配给一名员工。我们通过对Employee.PositionId具有唯一约束来强制执行此操作 在我的模型中,我希望在位置上有一个雇员属性,但在映射这一属性时遇到了问题 我试过了 modelBuilder.Entity<Employee>().HasRequired(e => e.Position)

我有两张员工和职位表

雇员 雇员ID(PK)

位置ID(FK,可为空)

位置 位置ID(主键)

可以创建职位,也可以不分配职位。但是,在职员工需要一个职位。一个职位只能分配给一名员工。我们通过对Employee.PositionId具有唯一约束来强制执行此操作

在我的模型中,我希望在位置上有一个雇员属性,但在映射这一属性时遇到了问题

我试过了

modelBuilder.Entity<Employee>().HasRequired(e => e.Position)
                               .WithOptional(p => p.Employee);
modelBuilder.Entity().HasRequired(e=>e.Position)
.可选(p=>p.Employee);
但是,这最终会将Employee.EmployeeId映射到Position.PositionId列,而不是Employee.PositionId映射到Position.PositionId(至少从我所知…)

即使我通过唯一约束强制1-1,我也只能选择将此映射为一对多关系吗?

引用自:

代码优先(通常是EF)不支持一对一外键关联。事实上,EF根本不支持任何涉及唯一约束的关联场景

在fluent api中:

modelBuilder.Entity<Employee>()
            .HasRequired(e => e.Position)
            .WithMany()
            .HasForeignKey(e => e.PositionId);
可能重复的
protected override void Seed(EntityMappingContext context)
{
context.Database.SqlCommand("ALTER TABLE Employees ADD CONSTRAINT uc_Position UNIQUE(PositionId)");
}