是否有.NET多态数据框架

Jos*_*osh 8 .net c# polymorphism ado.net database-design

我正在开始研究一个新项目,如果有一些方法可以使不同的数据模型具有多态性,那么这个项目会更容易.我正在考虑使用Entity Framework 4.0(当它发布时),但是无法确定它是否真的能够正常工作.

这是基本情景.我实现了一个评论系统,并希望能够将它连接到许多不同类型的模型.也许我想对一个人的个人资料发表评论,并对网页发表评论.我过去这样做的方法是在人员表和评论表之间创建关系,与网页表和评论表之间的关系分开.但是,我认为这会导致数据库中的表结构过于复杂.

如果我能够在我想要注释的对象上添加接口,然后将数据库中的表结构简化为单个关系,那将是最好的.

我遇到的问题是,我似乎不知道正确的术语,以便找到有关如何做这类事情的信息.任何人都可以提供任何帮助将不胜感激.

Jay*_*Jay 2

如果您将“评论表”设计为与评论类型无关(只是基础知识,例如 ID、日期和时间以及文本内容),则可以使用一个附加表来映射所有这些内容。

public interface ICommentable
{
   int CommentTypeCode
   int Id
   ...
}
Run Code Online (Sandbox Code Playgroud)

现在映射器表包含列:

  • 评论类型代码
  • 目标对象ID
  • 评论id

您的评论全部放在一张表中,并带有一个 Id 您的各种“目标对象”都必须具有相同类型的 Id

现在,您可以在系统中任意添加新的“可注释”对象,而无需更改注释表或映射器表 - 只需为其分配新的类型代码并使用必需的 Id 列创建表即可。