我有具有以下结构的现有数据库:
我正在使用 EF fluent API 来配置表之间的关系:
public GroupEntityConfiguration()
{
HasMany(x => x.Employees).WithRequired().HasForeignKey(x => x.GroupId).WillCascadeOnDelete(true);
}
public EmployeeEntityConfiguration()
{
HasOptional(x => x.InnerGroupMember).WithRequired();
}
应用此配置后,我可以添加新员工、新 InnerGroupMember 或获取数据。当我尝试删除员工时出现问题。然后我得到一个例外:
无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
据我了解,上述异常与 GroupId 外键有关。尝试修复它我正在向 EmployeeEntityConfiguration 添加以下行:
HasKey(x => new { x.Id, x.GroupId});
但是在添加它之后,我得到了另一个我认为与 InnerGroupMember 对象相关的异常:
列名“Guest_Id”无效。列名“Guest_GroupId”无效。
如果我注释掉 InnerGroupMember 导航属性并删除它的配置,则可以删除 Employee。
您能否给我一个提示我做错了什么以及如何配置实体以能够执行所有需要的操作?谢谢!