max*_*e51 11 c# entity-framework-core
我想在自有类型上定义一对多关系.
在我的例子中,
InboundRequest:主体实体
RequestHistory:拥有类型
RequestHistoryEntry:依赖实体
public class InboundRequest : IAggregateRoot
{
public int Id { get; private set; }
public RequestHistory History { get; private set; }
}
public class RequestHistory
{
public IList<RequestHistoryEntry> HistoryEntries { get; set; }
}
public class RequestHistoryEntry
{
public RequestState State { get; private set; }
public DateTime Timestamp { get; private set; }
public int Id { get; set; }
}
builder.Entity<InboundRequest>().OwnsOne(x => x.History);
Run Code Online (Sandbox Code Playgroud)
不幸的是,EF Core给了我以下错误:
不支持从"RequestHistoryEntry"到"InboundRequest.History #RequestHistory.HistoryEntries"的关系,因为拥有的实体类型"InboundRequest.History #RequestHistory"不能在主体端.
有没有办法在自有类型和依赖项列表之间建立一对多的关系?
小智 1
与自有类型建立一对多关系的唯一方法是自有实体位于关系的多方,在这种情况下,ef core 会按照约定将其映射到单独的表。您正在尝试的事情本身在设计上是不可能的。但是,在您的特定情况下,为什么不完全摆脱RequestHistory并将列表RequestHistoryEntry作为拥有类型的集合添加到您的列表中,InboundRequest如下所示:
public class InboundRequest : IAggregateRoot
{
public int Id { get; private set; }
public IList<RequestHistoryEntry> HistoryEntries { get; set; }
}
public class RequestHistoryEntry
{
public RequestState State { get; private set; }
public DateTime Timestamp { get; private set; }
public int Id { get; set; }
}
builder.Entity<InboundRequest>().OwnsMany(x => x.HistoryEntries);
Run Code Online (Sandbox Code Playgroud)
这应该消除错误并实现您与依赖实体的所需关系。
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |