2010-03-23 21 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