2

私はコードでnhibernate 3.2の新しいフィーチャマッピングを使用します(それは非常にうまくいきます)。Nhibernateのコードによるマッピング、ストアドプロシージャの使い方は?

例:

[Serializable] 
public class Profil 
{ 
    public virtual int Id 
    { 
     get; 
     set; 
    } 
    public virtual string Nom 
    { 
     get; 
     set; 
    } 
} 

public class ProfilMap : ClassMapping<Profil> 
{ 
    public ProfilMap() 
    { 
     Id<int>(x => x.Id, map => 
     { 
      map.Generator(NHibernate.Mapping.ByCode.Generators.Identity); 
     }); 
     Property<string>(x => x.Nom); 
    } 
} 

私は、ストアドプロシージャを使用するようになりましたたいと思います。いずれかの新しい構文があります

public void FillNouveautes(ISession session, int idClient) 
    { 
     var query = session.GetNamedQuery("FillNouveautes"); 
     query.SetInt32("Idclient", idClient); 
     query.ExecuteUpdate(); 
    } 

:NHibernateの古いバージョンでは、私はそれをこのように使用

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <sql-query name="FillNouveautes"> 
    exec FillNouveautes :Idclient 
    </sql-query> 
</hibernate-mapping> 

のようなのhbm.xmlファイルを使用できますか?または古いスタイルを使用する必要がありますか?

よろしくお願いいたします。

答えて

2

FluentNHibernateでこれを行うことはできません。マッピングでsprocsを使用できるのは、CRUD操作に直接関連付ける場合だけです。 ですが、ハイブリッドFluentNHibernate設定 - Fluent Mappings HBMファイルを使用しています。

+0

実際には流暢なnhibernate公式プロジェクトではありませんが、nhibernate 3.2でデフォルトで導入された新しい機能は、コードによるマッピングです。 (Btwは同じ構文ですが、同じプロジェクトではありません) –

2

をテストする必要がありますが、それはリスト

を取得するには、ストアドプロシージャ「GetMemberGameActivity」を呼び出す



    public class GameActivity 
    { 
      public virtual DateTime Date { get; set; } 
      public virtual string GameRoundId { get; set; } 
      public virtual int GameProvider { get; set; } 
      public virtual string GameName { get; set; } 
      public virtual decimal RealBet { get; set; } 
      public virtual decimal RealWin { get; set; } 
      public virtual decimal BonusBet { get; set; } 
      public virtual decimal BonusWin { get; set; } 
      public virtual decimal BonusContribution { get; set; } 
      public virtual int IsRoundCompleted { get; set; } 
      public virtual int IsRoundCancelled { get; set; } 
    } 

GameActivityクラスだ私の場合には、結果セットを返すためにクラスを持っている必要があります



    var result = session.CreateSQLQuery("exec GetMemberGameActivity :mToken, :StartDate, :EndDate") 
         .SetResultTransformer(Transformers.AliasToBean()) 
         .SetParameter("mToken", token) 
         .SetParameter("StartDate", startDate) 
         .SetParameter("EndDate", endDate) 
         .List().ToList(); 

関連する問題