我有一个拥有类型的实体,我想与另一个实体建立关系,但外键属性存在于拥有的类型示例中:-这是我的员工实体
public sealed class Employee : AuditedAggregateRoot
{
public WorkInformation WorkInformation { get; private set; }
}
它包含一个名为 WorkInformation 的值对象(自有类型)
public class WorkInformation : ValueObject<WorkInformation>
{
private WorkInformation()
{
}
public int? DepartmentId { get; private set; }
}
我需要在员工和部门之间建立关系
public class Department : AuditedAggregateRoot
{
}
我使用以下 Fluent 配置来执行此操作,但出现错误
builder.OwnsOne(e => e.WorkInformation)
//Add Employee Relations
builder.HasOne<Department>()
.WithMany()
.IsRequired(false)
.HasForeignKey(e => e.WorkInformation.DepartmentId);
我得到了这个错误
如果我将 DepartmentId 移动到所有者实体,它工作正常。
拥有的类型(它们的属性、关系等)不能通过所有者类型构建器进行配置。相反,使用 OwnsOne
方法返回的 ReferenceOwnershipBuilder
:
var workInfomationBuilder = builder.OwnsOne(e => e.WorkInformation);
//Add Employee Relations
workInfomationBuilder.HasOne<Department>()
.WithMany()
.IsRequired(false)
.HasForeignKey(e => e.DepartmentId);
我是一名优秀的程序员,十分优秀!