2013-05-07 54 views

回答

25

我假設你使用標準

Session.GetNamedQuery(.... 

相反,你可以使用

var result = Session.CreateSQLQuery("exec MyStoredProc :pUserId, :pIsLocked") 
        .AddEntity(typeof(MyDomainObject)) 
        .SetParameter("pUserId", userId) 
        .SetParameter("pIsLocked", isLocked) 
        .List<MyDomainObject>(); 

這使您可以調用存儲過程,但仍然得到一個域對象(或列表)無需要一個.hbm.xml文件。

Actually there's this post

3

你應該有一個類返回結果在我的情況下,設置它的GameActivity類



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

調用存儲過程 「GetMemberGameActivity」 以獲取列表



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

+0

有效的答案,只有當您導出到通用列表時,您需要指定通用類。例如在我的情況下,結果是IList 然後我需要修改答案:var result = repository.Session.CreateSQLQuery(「exec USP_SA_Get1098TDataForTaxYear:TaskYear,:CampusId」) .SetResultTransformer(Transformers.AliasToBean ()) (); .SetParameter(「TaskYear」,filter.Year) .SetParameter(「CampusId」,filter.CampusId) .List ().ToList(); – freedeveloper 2015-11-19 18:10:54