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