0

我在这里遇到了 Entity Framework 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; }
}

但是由于字段 Price、CategoryID 和 Quantity 是由实体框架自动生成的,我必须从 EF 自动生成的文件中删除它们,然后一切正常。

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

实现这一点的更好方法是什么,这样我每次必须更新模型时都不必手动删除 50 个字段?

4

1 回答 1

3

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

例如,我有这个界面:

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();
于 2013-11-03T15:06:01.157 回答