繁体   English   中英

C#实体框架-部分类的继承问题

[英]C# Entity Framework - Inheritance issue with partial classes

我在这里遇到实体框架5的问题

在我的程序中,我有一个定义如下的基类:

public abstract class CoreProduct
{
    public abstract decimal Price { get; set; }
    public abstract decimal CategoryID { get; set; }
    public abstract decimal Quantity { get; set; }

    public decimal CalculatePrice()
    {
       //Code to calculate the price here
    }
}

我想让实体框架自动生成要从此类继承的特定类,以便可以根据数量计算其价格,等等。

因此,我要做的是为普通产品创建一个新文件,并执行以下操作:

public partial class Product : CoreProduct
{
    public override decimal Price { get; set; }
    public override decimal CategoryID { get; set; }
    public override decimal Quantity { get; set; }
}

但是由于价格,类别ID和数量字段是由Entity Framework自动生成的,因此我必须从EF自动生成的文件中删除它们,然后一切正常。

我的问题是,每次必须更新模型时,代码都会再次自动生成,并且必须手动删除继承自CoreProduct类的所有类的所有字段。

有什么更好的方法可以做到这一点,因此我不必每次都要更新模型时都手动删除50个字段?

您可以创建一个接口以添加到所有子类中,并创建一个扩展方法来进行实际计算。

例如,我有以下界面:

public interface ICoreProduct
{
    decimal Price { get; set; }
    decimal Quantity { get; set; }
}

我为产品创建了第二个部分类以将其附加到该接口

public partial class Product : ICoreProduct
{
}

然后为ICoreProduct创建扩展方法

public static decimal CalculatePrice(this ICoreProduct product)
{
    return product.Price * product.Quantity;
}

然后,您应该能够按照以下方式进行操作:

Product prod = new Product();
prod.Price = 2;
prod.Quantity = 10;
decimal price = prod.CalculatePrice();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM