2010-03-23 3 views
8

Ich muss eine benannte Abfrage erstellen und sie mit einer der Karten verwenden, die ich derzeit als eine flüssige Karte definiert habe.fließend nhibernate named-query ohne hbm-Datei für die Karte

ist es möglich, weiterhin die flüssige Karte zu verwenden, und in der Lage, die Named-Abfrage dynamisch im Code zu erstellen? Oder, ist der Wechsel zu einer hbm-Karte die einzige Option?

Antwort

9

Vielleicht habe ich die Frage falsch gelesen, aber Sie müssen nicht vollständig auf hbm Mapping wechseln.

Sie könnten weiterhin flüssiges NHibernate verwenden, um Klassen zuzuordnen und hbm nur für benannte Abfragen zu verwenden. In Ihrer Konfiguration würden Sie dann die Entitäten und die HBMs einschließen.

_sessionFactory = Fluently.Configure() 
.Mappings(m => 
{ 
    m.FluentMappings.AddFromAssemblyOf<SomeEntityMap>(); 
    m.HbmMappings.AddFromAssemblyOf<SomeEntityMap>(); 
}) 
.BuildSessionFactory(); 

In Ihrem namedQueries.hbm.xml Sie dann nur benannte Abfragen definieren:

<?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

Wo es für die .hbm.xml Datei aus? – codeulike

+2

Sie müssen die Datei .hbm.xml als eingebettete Ressource definieren. Diese Zeile: m.HbmMappings.AddFromAssemblyOf (); Gibt Nhibernate an, welches Projekt gesucht werden soll (SomeEntityMap muss keine Map sein, sondern jede Klasse, die sich im selben Projekt befindet wie die Datei hbm.xml) –