【问题标题】:Is there a workaround for the unsupported IParameterizedType in Fluent NHibernate?Fluent NHibernate 中不支持的 IParameterizedType 是否有解决方法?
【发布时间】:2009-12-02 15:34:12
【问题描述】:

Fluent NHibernate 目前是 unable to use the IParameterizedType of a CustomType,但我需要使用 fluent 映射,因为我想在我的代码中调整映射。

对于 Fluent NHibernate 是否有一种解决方法,它以某种方式注入将在法线映射 XML 文件中使用的 XML 元素?

我确实已经找到了类似的 SO Question "Fluent Nhibernate problem (ClassMap)",但给出的答案似乎不适用于 Fluent NHibernate 1.0。

【问题讨论】:

    标签: .net nhibernate fluent


    【解决方案1】:

    我需要使用流畅的映射,因为我想在我的代码中调整映射。

    您不一定需要使用流畅的映射来调整您的代码的映射。 NHibernate 支持动态映射。

    Here is an example of dynamic mapping in NHibernate.

    【讨论】:

      【解决方案2】:

      由于最新的 Fluent NHibernate 中存在针对您的问题的修复程序,但 1.0 中没有(如 Fluent Nhibernate problem (ClassMap) 所示,您应该改用该版本。

      有关获取最新版本的说明,请参阅“获取源代码”部分下的 Getting Started 指南。

      或者,您可以将这一类映射到传统的 *.hbm.xml 文件,而将其他类映射到流利的 nhibernate。示例:

      var sessionFactory = Fluently.Configure()
          .Database(...)
          .Mappings(m =>
          {
              m.FluentMappings.AddFromAssemblyOf<...>();
              m.HbmMappings.AddFromAssemblyOf<...>();
          })
          .BuildSessionFactory();
      

      【讨论】:

      • 我查看了fluent-nhibernate.googlecode.com/svn/trunk 的源代码,但即使 grep 也找不到名为 AddAlteration 的函数。您自己尝试过示例代码还是我遗漏了什么?
      • 我很抱歉。我认为该功能仍然存在。我现在也查看了源代码,并确认它不再存在。不过,我的第二个建议“m.HbmMappings...”应该仍然有效。
      • 正如我在问题中提到的,我想在代码中生成映射。所以基于静态 XML 的映射文件对我来说是无可替代的。
      • 来自 James Gregory:“它已被删除,因为我们不再在界面中生成 XML,而是生成适当的对象模型。传递 XML 块是非常糟糕的形式。我宁愿人们花时间实际实现缺少的功能而不是黑客。”
      • 所以看起来有几个选项。 1) 您可以使用静态 XML 文件。维护起来更麻烦,但它会起作用。 2)您可以获得仍然具有此功能的特定版本的 fluent-nhibernate。它于 2009 年 4 月 22 日被删除,因此 4 月 21 日的版本应该可以使用。 3)您可以在自己的 github fork 中实现“param”功能。这将非常酷,因为它将使我们所有人受益。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2011-03-01
      相关资源
      最近更新 更多