one-to-one mối quan hệ với thuộc tính FK rõ ràng (như PayGroup.SupervisorId của bạn ) không được hỗ trợ.
Vì vậy, hãy xóa thuộc tính đó khỏi mô hình:
public class PayGroup
{
public int Id { get; set; }
public virtual Employee Supervisor { get; set; }
}
và sử dụng cách lập bản đồ thông thạo sau:
modelBuilder.Entity<PayGroup>()
.HasRequired(e => e.Supervisor)
.WithOptional()
.Map(m => m.MapKey("SupervisorId"));
WithOptional() cuộc gọi chỉ định hai điều. Đầu tiên là không có thuộc tính điều hướng nghịch đảo trong Employee và thứ hai là FK là tùy chọn (Allow Nulls = true trong bảng).
Nếu bạn quyết định thêm thuộc tính điều hướng nghịch đảo
public class Employee
{
public string EmployeeId { get; set; }
public string FullName { get; set; }
public virtual PayGroup PayGroup { get; set; } // <=
}
thay đổi nó thành WithOptional(e => e.PayGroup) .
Nếu bạn muốn làm cho nó bắt buộc (Allow Nulls = false trong bảng), sau đó sử dụng WithRequiredDependent tương ứng quá tải ( Phụ thuộc ở đây có nghĩa là Employee sẽ là hiệu trưởng và PayGroup sẽ là phụ thuộc ).