[英]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.