2010-03-23 30 views

回答

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> 
+0

它在哪裏查找的.hbm.xml文件? – codeulike 2011-05-18 10:02:25

+2

您必須將.hbm.xml文件定義爲嵌入式資源。這一行:m.HbmMappings.AddFromAssemblyOf ();告訴nhibernate在哪個項目上查找(SomeEntityMap不需要是一個映射,而是與hbm.xml文件駐留在同一項目中的任何類) – 2011-05-19 20:48:23