与实体框架的关联继承

时间:2009-05-12 17:33:14

标签: c# entity-framework

例如考虑我的以下数据库模型。

  • UserTable(Id,用户名)
  • TextContentTable(Id,Name,Description,CreatedByUserId,ModifiedByUserId,TextContent)
  • ImageContentTable(Id,Name,Description,CreatedByUserId,ModifiedByUserId,ImageContent)

我想创建以下对象模型。但它甚至可能吗? 例如:

  • BaseEntity(Id)的
  • DescriptiveEntity(名称,描述):BaseEntity
  • TrackedEntity( CreatedBy ModifiedBy ):DescriptiveEntity
  • 用户(用户名):BaseEntity
  • TextContent(Text):TrackedEntity
  • ImageContent(Image):TrackedEntity

我希望你理解我的符号,但是可以将关联(用粗体标记)映射到各个表TextContentTable& ImageContentTable?

提前完成。

1 个答案:

答案 0 :(得分:1)

我不确定这种方法对于实体框架的当前发货版本是个好主意。当类型(如TextContent)继承自BaseEntity之类的类型时,它必须具有与基本类型相同的实体集。使用问题中概述的策略,应用程序中的所有实体都将具有相同的实体集。我不确定那是你想要的。

但是,您可以通过接口获得相同的效果。例如,你可以有一个接口,IEntity公开一个id属性。另一个接口ITrackedEntity可以公开CreatedBy和ModifiedBy。等

这并不理想,但目前对我们来说已经足够好了。我们实际上通过T4模板使用codegen来实现这些。

下一版本的Entity Framework可能具有使这种继承模式更容易实现而无需单个实体集的功能。