Bonjour
我需要一些帮助,以了解我们如何映射OwnedEntity时,他们是多形性。我有这个库存层次结构的记录是链接到一个产品类。
public abstract record Inventory
{
protected Inventory() { }
}
public record NoProductInventory : Inventory
{
public NoProductInventory()
{
}
}
public sealed record ProductLevelInventory : Inventory
{
public int Stock { get; private set; } = default!;
public int LowStock { get; private set; } = default!;
protected ProductLevelInventory() {}
public ProductLevelInventory(int stock, int lowStock) : base()
{
Stock = stock;
LowStock = lowStock;
}
}
public sealed record VariantLevelInventory : Inventory
{
public int Stock { get; private set; } = default!;
public int LowStock { get; private set; } = default!;
public int SomeOption { get; private set; }
protected VariantLevelInventory() {}
public VariantLevelInventory(int stock, int lowStock) : base()
{
Stock = stock;
LowStock = lowStock;
}
}产品类定义
public class Product
{
....
public Inventory Inventory { get; private set; } = default!;
....
}我正在使用fluent API来映射这些实体。
public class ProductEntityTypeBuilder : IEntityTypeConfiguration<Product>
{
public void Configure(EntityTypeBuilder<Product> builder)
{
builder.OwnsOne(x => x.Inventory, bld =>
{
bld.ToTable("Inventories");
// bld.Property(x => x.TrackInventory).IsRequired();
bld.Property(x => x.Stock).IsRequired(false);
bld.Property(x => x.LowStock).IsRequired(false);
// bld.Property(x => x.InventoryTrackType).IsRequired(false);
});
}
}我的问题是:我怎样才能告诉EF使用哪一份库存记录?我不想用铸造来弄清楚一个产品有什么样的库存。
日安!
发布于 2022-05-15 13:24:52
拥有实体意味着作为值类型使用,包含和封装多个值,这些值属于一起并且本身没有意义,即MonetaryAmount,它由一个Amount和一个Currency属性组成。
你现在不能这么做。如果需要层次结构,则必须将自己拥有的类型转换为实体,并将其用作基本类型上的常规导航属性,这些属性通过判别器进行区分。
拥有的类型不支持继承拥有的类型:短消息
目前的缺点 拥有的实体类型不能具有继承层次结构。
https://stackoverflow.com/questions/72248468
复制相似问题