Esiste un modo per eseguire una query sulla stored procedure in Fluent Nhibernate senza creare un mapping di file hbm.xml?Fluente NHibernate per eseguire query sulla stored procedure senza un mapping hbm.xml
18
A
risposta
25
suppongo si utilizza lo standard
Session.GetNamedQuery(....
invece, è possibile utilizzare
var result = Session.CreateSQLQuery("exec MyStoredProc :pUserId, :pIsLocked")
.AddEntity(typeof(MyDomainObject))
.SetParameter("pUserId", userId)
.SetParameter("pIsLocked", isLocked)
.List<MyDomainObject>();
Questo consente di chiamare la stored procedure, ma ancora ottenere indietro un oggetto di dominio (o una lista di) senza bisogno di un file .hbm.xml.
3
Si dovrebbe avere una classe per il risultato di tornare insieme nel mio caso si tratta di classe 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; }
}
chiamata stored procedure "GetMemberGameActivity" per ottenere la lista
var result = session.CreateSQLQuery("exec GetMemberGameActivity :mToken, :StartDate, :EndDate")
.SetResultTransformer(Transformers.AliasToBean())
.SetParameter("mToken", token)
.SetParameter("StartDate", startDate)
.SetParameter("EndDate", endDate)
.List().ToList();
risposta valida, solo se si esporta in un elenco generico è necessario specificare la classe generica. per esempio nel mio caso il risultato è un IList quindi ho bisogno di modificare la risposta a: var result = repository.Session.CreateSQLQuery ("exec USP_SA_Get1098TDataForTaxYear: TaskYear,: CampusId") .SetResultTransformer (Transformers.AliasToBean ()) . SetParameter ("TaskYear", filter.Year) . SetParameter ("CampusId", filter.CampusId) .Lista () .ToList(); –
freedeveloper