我需要创建一个命名查询,并将其与其中一个地图一起使用,我目前已将其定义为流畅的地图。
是否可以继续使用流畅的地图,并能够在代码中动态创建命名查询?或者,切换到hbm地图是唯一的选择吗?
答案 0 :(得分:9)
也许我误解了这个问题,但你不必完全切换到hbm映射。
您可以继续使用流畅的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>