实体框架装饰模式

时间:2010-06-15 18:29:01

标签: c# entity-framework interface decorator

在我的业务范围内,我们有产品。用户可以通过向其添加修改来修改这些产品。修改可以执行诸如更改价格和更改产品属性等操作。对我来说,这似乎符合装饰者模式 完美

现在,设想一个数据库,其中产品存在于一个表中,而修改存在于另一个表中,并且数据库通过实体框架连接到我的应用程序。我如何获得Product对象和Modification对象来实现相同的接口,以便我可以互换使用它们?

例如,我希望能够做的事情: 给定一个Modification对象,调用.GetNumThings(),然后返回原始对象中的数量,加上或减去修改添加的内容的数量。

这个问题可能源于一个非常严重缺乏EF的细节(我迄今为止所有的经验都是非常直接的LOB Silverlight应用程序),如果是这样的话,请随意告诉我RTFM。

提前致谢!

修改 如果给定第三个表将产品链接到修改(一对多),它可以重建装饰对象(我意识到这可能超出了EF自动执行的范围),这也是很好的。你会如何推荐这个,以及该代码在哪里?它是EF类的一部分还是我从DB收到的每个实体都需要通过某种“构建器”来从Product及其修改列表构造一个装饰对象?

1 个答案:

答案 0 :(得分:0)

我不完全确定我是否正确理解了您的问题,但是这里说:您可以为EF模型中定义的类创建部分类。您可以定义公共接口并使用部分类来实现该接口。

例如:

public interface IProduct{
   public int GetNumThings();
}

public partial class Product : IProduct{

   public int GetNumThings()
   {
   ...
   }
}

public partial class Modification: IProduct{
   public int GetNumThings()
   {
   ...
   }
}