与拥有的实体内的属性创建关系会导致错误

yo2*_*011 3 c# entity-framework-core

我有一个拥有类型的实体,我想与另一个实体建立关系,但拥有的类型示例中存在外键属性:- 这是我的员工实体

public sealed class Employee : AuditedAggregateRoot
{
     public WorkInformation WorkInformation { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

它包含一个名为 WorkInformation 的值 Object(Owned Type)

public class WorkInformation : ValueObject<WorkInformation>
{
    private WorkInformation()
    {

    }
    public int? DepartmentId { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要在员工和部门之间建立关系

public class Department : AuditedAggregateRoot
{

}
Run Code Online (Sandbox Code Playgroud)

我使用以下 Fluent 配置来执行此操作,但出现错误

  builder.OwnsOne(e => e.WorkInformation)  

 //Add Employee Relations
   builder.HasOne<Department>()
   .WithMany()
   .IsRequired(false)
   .HasForeignKey(e => e.WorkInformation.DepartmentId);
Run Code Online (Sandbox Code Playgroud)

我得到了这个错误 在此处输入图片说明

如果我将 DepartmentId 移动到所有者实体,它工作正常。

Iva*_*oev 5

不能通过所有者类型构建器配置拥有的类型(它们的属性、关系等)。相反,使用方法ReferenceOwnershipBuilder返回的OwnsOne

var workInfomationBuilder = builder.OwnsOne(e => e.WorkInformation);

//Add Employee Relations
workInfomationBuilder.HasOne<Department>()
    .WithMany()
    .IsRequired(false)
    .HasForeignKey(e => e.DepartmentId);
Run Code Online (Sandbox Code Playgroud)