代码之家  ›  专栏  ›  技术社区  ›  jgauffin

相同表的相同业务实体?

  •  0
  • jgauffin  · 技术社区  · 15 年前

    我有一个旧数据库,它有大约10个相同的表(只有名称不同)。 是否可以在不创建多个类/映射文件的情况下,为所有表使用相同的业务实体?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Sisyphus    15 年前

    如果您使用的是nhibernate 2.1版或更高版本,则可以使用实体名称功能。它的文档记录很差,但我正在积极使用这个特性。很难在上面找到文档,但请看这里:

    第5.3节

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

    一些需要注意的事情。现在必须使用实体名而不是类名来引用对象。一般来说,从类名到实体名的转换并不是完全透明的。

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

    _ session.save(“myEntity”,myObject)

    实体名称控制数据进入的表。

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

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

        2
  •  1
  •   Owen Pauling tmatuschek    10 年前

    您可以创建一个具有所有属性的基类,但仍然需要映射所有属性。

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