首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拥有具有多态性EF核心6的实体

拥有具有多态性EF核心6的实体
EN

Stack Overflow用户
提问于 2022-05-15 12:56:06
回答 1查看 384关注 0票数 1

Bonjour

我需要一些帮助,以了解我们如何映射OwnedEntity时,他们是多形性。我有这个库存层次结构的记录是链接到一个产品类。

代码语言:javascript
复制
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;
    }
}

产品类定义

代码语言:javascript
复制
public class Product
{
    ....
    public Inventory Inventory { get; private set; } = default!;
    ....
}

我正在使用fluent API来映射这些实体。

代码语言:javascript
复制
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使用哪一份库存记录?我不想用铸造来弄清楚一个产品有什么样的库存。

日安!

EN

回答 1

Stack Overflow用户

发布于 2022-05-15 13:24:52

拥有实体意味着作为值类型使用,包含和封装多个值,这些值属于一起并且本身没有意义,即MonetaryAmount,它由一个Amount和一个Currency属性组成。

你现在不能这么做。如果需要层次结构,则必须将自己拥有的类型转换为实体,并将其用作基本类型上的常规导航属性,这些属性通过判别器进行区分。

拥有的类型不支持继承拥有的类型:短消息

目前的缺点 拥有的实体类型不能具有继承层次结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72248468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档