流畅的nhibernate命名查询,而不使用地图的hbm文件

use*_*555 8 nhibernate fluent map named-query

我需要创建一个命名查询,并将其与其中一个地图一起使用,我目前已将其定义为流畅的地图.

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

Mar*_*ner 10

也许我误解了这个问题,但你不必完全切换到hbm映射.

您可以继续使用流畅的NHibernate映射类,并仅将hbm用于命名查询.在您的配置中,您将包含实体和hbms.

_sessionFactory = Fluently.Configure()
.Mappings(m =>
{
   m.FluentMappings.AddFromAssemblyOf<SomeEntityMap>();
   m.HbmMappings.AddFromAssemblyOf<SomeEntityMap>();
})
.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

  • 您必须将.hbm.xml文件定义为嵌入式资源.这一行:m.HbmMappings.AddFromAssemblyOf <SomeEntityMap>(); 告诉nhibernate要查看哪个项目(SomeEntityMap不一定是地图,而是与hbm.xml文件驻留在同一个项目中的任何类) (2认同)