8
我需要创建一个命名查询,并将其与其中一个地图一起使用,我目前已将其定义为流畅地图。流利的nhibernate命名查询,没有使用地图的hbm文件
是有可能继续使用流利的映射,并能够在代码中动态创建命名查询?或者,切换到hbm地图是唯一的选择?
我需要创建一个命名查询,并将其与其中一个地图一起使用,我目前已将其定义为流畅地图。流利的nhibernate命名查询,没有使用地图的hbm文件
是有可能继续使用流利的映射,并能够在代码中动态创建命名查询?或者,切换到hbm地图是唯一的选择?
也许我误解了这个问题,但是您不必完全切换到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>
它在哪里查找的.hbm.xml文件? – codeulike 2011-05-18 10:02:25
您必须将.hbm.xml文件定义为嵌入式资源。这一行:m.HbmMappings.AddFromAssemblyOf();告诉nhibernate在哪个项目上查找(SomeEntityMap不需要是一个映射,而是与hbm.xml文件驻留在同一项目中的任何类) –
2011-05-19 20:48:23