相同表的相同业务实体?

时间:2010-10-18 09:18:24

标签: nhibernate mapping

我有一个遗留数据库,它有大约10个相同的表(只有名称不同)。 是否有可能为所有表使用相同的业务实体而无需创建多个类/映射文件?

2 个答案:

答案 0 :(得分:1)

您可以创建包含所有属性的基类,但仍需要将它们全部映射。

为此,您可以使用复制和粘贴,XML实体(请参阅http://nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcreate-polymorphism上的检查)或基于代码的映射方法(Fluent或ConfORM)。它们通常使重用更容易。

答案 1 :(得分:1)

如果您使用的是NHibernate v2.1或更高版本,则可以使用实体名称功能。它记录不清,但我正在积极使用该功能。它很难找到它的文档,但请看这里:

中的第5.3节

http://docs.jboss.org/hibernate/core/3.2/reference/en/html/mapping.html#mapping-entityname

有几点需要注意。您现在必须使用entity-name而不是class name来引用对象。一般来说,从类名转移到实体名称并不是一个完全透明的变化。

会话操作现在需要两个参数,例如:

_session.Save(“MyEntity”,myobject)

entity-name控制数据进入的表。

有些HQL查询不再正常工作,有时您必须使用Criteria。

如果您需要一组示例代码,我可能会发布一些示例代码,但此刻太忙了。我建议您查看您可以找到的有限信息,并将其设置为一个非常简单的对象和多个表来了解它是如何工作的。它确实有效。