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

Fluent Nhibernate和动态表名

  •  1
  • lancscoder  · 技术社区  · 16 年前

    我有一个父对象和子对象。根据父对象中的值更改子对象的表。例如,如果父对象有一个引用“01”,那么它将在下表“Child01”中查找,而如果引用是“02”,那么它将在下表“Child02”中查找。所有子表的列数/名称数等都相同。

    我的问题是,如何告诉Fluent Nhibernate或Nhibernate要查看哪个表,因为每个父对象都是唯一的,并且可以引用多个不同的子表?

    我已经用Fluent查看了IClassConvention,但它似乎只在创建会话时调用,而不是每次创建对象时调用。

    2 回复  |  直到 16 年前
        1
  •  1
  •   lancscoder    16 年前

    我只找到了两种方法。

    1. 每次需要查看另一个动态表时,关闭并重新创建nhibernate会话。在创建会话时,使用IClassConvention根据用户数据动态计算名称。我发现这非常密集,因为它是一个大型数据库,而且每次创建会话都需要花费高昂的操作。
    2. 对这些具有自定义数据访问的表使用POCO对象。

    正如statichippo所说的,我可以使用basechild对象并拥有多个子对象。由于数据库的大小和动态表的数量,这实际上不是一个有效的选项。

    我的两个解决方案都不是我特别满意的,但POCO似乎是解决我问题的最好方法。

        2
  •  0
  •   hackerhasid    16 年前

    对象 关系映射器。听起来你更像是在做一个脚本风格的工作,并希望映射你的 数据 而不是以面向对象的方式工作。

    不过,听起来你有类层次结构的特质。怎么了 声音 就像您试图在代码中创建(然后相应地映射)不同类型子对象的层次结构一样:

    --&燃气轮机;聪明的孩子

    --&燃气轮机;哑巴

    任何一个

    我了解问题/你在找什么吗?