ORM 继承支持

Posted

技术标签:

【中文标题】ORM 继承支持【英文标题】:ORMs inheritance support 【发布时间】:2011-01-15 17:00:20 【问题描述】:

我试图在一个实体中映射两个表,因为这些表实际上是一个实体。 作为设计师,我尝试过 llblgen 和 Visual NHibernate,但都没有成功

Visual NHibernate 看不到一对一的关系,但是我已经实现了它。 也许我的数据库模式没有满足这种继承实现的所有要求。 但是我认为我所需要的只是建立一对一的关系来进行这种类型的继承。

也许你们中的一些人已经尝试过了?

编辑:添加表格图片

我想要我的以下课程

public class Expense 
   public int Id get; set;
   public int Type get; set;
   public decimal Amount get; set;
   public string SomeAdditionalInfo get; set;

【问题讨论】:

您的问题不清楚。 Visual NH 是一个设计师,它可能不一定支持 NH 的所有功能。如果两个表组成一个实体,我看不到继承。你为什么不向我们展示类和表? 也许你是对的,它不是继承,但是我需要知道是否可以在一个实体中映射两个表。我可以使 Transact 抽象化,Expense 将继承它。这样它就可以工作了。 Visual NHibernate 可以将两个表映射到一个实体,如果这是您想要的。为此:右键单击实体视图(费用)上的引用实体(交易)。在上下文菜单上单击“合并到费用”。 Transact 中的字段将合并到 Expense 中,并且 Transact 实体将从模型中删除。请注意,“合并到 xxxx”只会出现在 1:1 引用的上下文菜单中。请将 Visual NHibernate 的问题报告给support.slyce.com 【参考方案1】:

您将需要查看 Hibernate 文档以了解继承映射,特别是 table-per-hierarchy 模型。你说你可以使 Transact 抽象并让 Expense 继承它,所以我认为如果我理解正确的话这应该可以解决你的问题。

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/inheritance.html

或者,如果您不想使用按层次结构表的方法,还有其他几种方法可以实现该链接中列出的目标。

【讨论】:

以上是关于ORM 继承支持的主要内容,如果未能解决你的问题,请参考以下文章

是否有支持 ESE 的 ORM?

支持 UPSERT 的 Android SQLite ORM? [关闭]

如何用ORM支持SQL语句的CASE WHEN?

ORM 支持泛型类型的映射

ORM更新不支持文件上传

哪些 ORM 工具支持这个版本的 Queryable.Select 扩展方法