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