1

すべての NHibernate xml マッピング ファイルを、おしゃべりなマッピング (コードによるマッピング) に置き換えました。私が理解できない唯一のことは、おしゃべりなマッピングを使用してこの名前付きクエリを定義できるかどうかです。

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

それが可能かどうかを知っている人はいますか?それを行う方法や正しい方向に向ける方法はありますか?

前もって感謝します、よろしく、テッド

4

1 に答える 1

1

マッピングを混在させることもできます。つまり、コードによるマッピングの新しい機能をすべて使用し、HBM という名前のマッピング ファイルの一部を引き続き使用できます。

解決策は非常に簡単です。まず、web.config (または外部 nhibernate 構成ファイル) を次のように定義する必要があります。

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

次に、それに応じて NHibernate を構成します。

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();

これに関するブログ記事を書きました。

于 2011-10-27T13:06:42.047 に答える