【问题标题】:fluent nhibernate named-query without using hbm file for the map流畅的 nhibernate 命名查询,不使用地图的 hbm 文件
【发布时间】:2011-01-30 14:44:34
【问题描述】:

我需要创建一个命名查询,并将它与我目前已定义为流利地图的地图之一一起使用。

是否可以继续使用流利的地图,并能够在代码中动态创建命名查询?或者,切换到 hbm 地图是唯一的选择吗?

【问题讨论】:

    标签: nhibernate map fluent named-query


    【解决方案1】:

    也许我误读了这个问题,但您不必完全切换到 hbm 映射。

    您可以继续使用 fluent NHibernate 来映射类并仅将 hbm 用于命名查询。然后在您的配置中包含实体和 hbms。

    _sessionFactory = Fluently.Configure()
    .Mappings(m =>
    {
       m.FluentMappings.AddFromAssemblyOf<SomeEntityMap>();
       m.HbmMappings.AddFromAssemblyOf<SomeEntityMap>();
    })
    .BuildSessionFactory();
    

    然后在您的 namedQueries.hbm.xml 中您只定义命名查询:

    <?xml version="1.0" encoding="utf-8"?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <query name="Some.Query.Of.Yours">
    <![CDATA[
              from SomeEntity e
              where  e.Property = :propertyValue
              ]]>
    </query>
    </hibernate-mapping>
    

    【讨论】:

    • 在哪里寻找 .hbm.xml 文件?
    • 您必须将 .hbm.xml 文件定义为嵌入式资源。这一行: m.HbmMappings.AddFromAssemblyOf();告诉 nhibernate 查看哪个项目(SomeEntityMap 不必是地图,而是与 hbm.xml 文件位于同一项目中的任何类)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多