如何解决如何在 EF Core 5 Fluent API 中配置具有继承关系的值对象
我有一个带有聚合 A 的 DDD 项目,它有一个实体列表属性 List,并且实体 B 中有一个值对象 C,代码如下:
public class A
{
public Guid Id {get; protected set;}
public List<B> Bs {get; protected set;}
}
public class B
{
public Guid Id {get; protected set;}
public C C {get; protected set;}
}
public record C{}
public record C1:C{}
PUBLIC record C2:C{}
因为类型 C 有子类,所以在 Fluent API 中我是这样配置的:
public AClasstypeConfiguration : IEntityTypeConfiguration<A>
{
public void Configure(EntityTypeBuilder<A> builder)
{
builder.HasKey(p => p.Id);
builder.OwnsMany(p => p.Bs,p =>
{
p.HasKey(g => g.Id);
p.Property(g => g.Id).ValueGeneratednever();
p.HasOne(g => g.C);
});
}
}
public cclasstypeConfiguration : IEntityTypeConfiguration<C>
{
public void Configure(EntityTypeBuilder<C> builder)
{
builder.HasNoKey();
builder.Hasdiscriminator<int>("SubType")
.HasValue<C1>(1);
.HasValue<C2>(2);
}
}
但是,当我调试代码时,它会抛出一个 InvalidOperationException 并带有消息“无法确定由类型 'C' 的导航 'BC' 表示的关系。要么手动配置该关系,要么使用 '[NotMapped]' 忽略此属性属性或通过在 'OnModelCreating' 中使用 'EntityTypeBuilder.Ignore'。"
那么如何在 EF Core 5 Fluent API 中配置具有继承关系的值对象?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。