2011-10-27 2 views
1

J'ai remplacé tous mes fichiers de mappage XML de NHibernate par des mappages loquaces (mappage par code). La seule chose que je ne peux pas comprendre est s'il est possible de définir cette requête nommée en utilisant les correspondances loquaces:Comment mapper une fonction sql en tant que requête nommée avec le mappage loquace de Nhibernate?

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping namespace="Domain" assembly="Domain" xmlns="urn:nhibernate-mapping-2.2"> 
    <sql-query name="MyFunction"> 
    <query-param name="Inputparam1" type="Int32"/> 
    <query-param name="Inputparam2" type="Int32"/> 
    <return-scalar column="ResultParam" type="Int32"/> 
    <![CDATA[ select MyFunction(:Inputparam1,:Inputparam2) as ResultParam ]]> 
    </sql-query> 
</hibernate-mapping> 

Est-ce que quelqu'un sait s'il est possible, et ainsi comment le faire ou me diriger dans la bonne direction ?

Merci à l'avance, Cordialement, Ted

Répondre

1

Vous pouvez toujours mélanger vos correspondances, qui est d'utiliser toutes les nouvelles jutosité de cartographie par code et ont encore certains de vos nom HBM fichiers de mappage.

La solution est assez simple, vous devez d'abord définir votre web.config (ou fichier de configuration de NHibernate externe) comme: -

<configSections> 
    <section name="hibernate-configuration" 
    type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" 
    requirePermission="false" /> 
</configSections> 

<hibernate-configuration 
    xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="dialect"> 
     NHibernate.Dialect.MySQL5Dialect 
    </property> 
    <mapping assembly="Domain.Model" /> 
    </session-factory> 
</hibernate-configuration> 

Configurez ensuite NHibernate en conséquence: -

var mapper = new ModelMapper(); 
mapper.AddMappings(typeof(CmsMeta).Assembly.GetTypes()); 
//Notice the .Configure, this is the magic that allows you to 
// use the mixed mappings 
var configure = new Configuration().Configure(); 
configure.DataBaseIntegration(x => 
{ 
    x.Dialect<MySQL5Dialect>(); 
    x.ConnectionStringName = "db"; 
}).CurrentSessionContext<WebSessionContext>(); 

configure.AddDeserializedMapping(mapping, "Domain"); 
SessionFactory = configure.BuildSessionFactory(); 

I J'ai écrit un blog post à ce sujet.

+0

Salut Rippo, je suis désolé j'ai oublié de mentionner, mais c'est exactement ce que j'ai en ce moment .. Je me demandais juste si je pourrais perdre les fichiers xml complètement. BTW: Je l'ai eu à cause de votre blog! déjà trouvé il y a quelques semaines .. alors merci pour les blogs! – TedOnTheNet

+0

ah! :) bon blog que :) – Rippo

+0

Si vous trouvez une solution allez-vous le poster ici? Je n'ai pas encore travaillé sur ce point – Rippo

Questions connexes