Gibt es eine Möglichkeit, gespeicherte Prozedur in Fluent Nhibernate abzufragen, ohne eine hbm.xml-Dateizuordnung zu erstellen?Fluent NHibernate, gespeicherte Prozedur ohne eine hbm.xml-Zuordnung abzufragen
18
A
Antwort
25
Ich nehme an, Sie verwenden das Standard-
Session.GetNamedQuery(....
stattdessen Sie
var result = Session.CreateSQLQuery("exec MyStoredProc :pUserId, :pIsLocked")
.AddEntity(typeof(MyDomainObject))
.SetParameter("pUserId", userId)
.SetParameter("pIsLocked", isLocked)
.List<MyDomainObject>();
Auf diese Weise können Sie die gespeicherte Prozedur aufrufen können, aber immer noch ein Domain-Objekt zurück (oder eine Liste von) ohne Benötigt eine .hbm.xml-Datei.
3
Sie sollten es GameActivity Klasse
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; }
}
Aufruf Stored Procedure "GetMemberGameActivity", um die Liste
var result = session.CreateSQLQuery("exec GetMemberGameActivity :mToken, :StartDate, :EndDate")
.SetResultTransformer(Transformers.AliasToBean())
.SetParameter("mToken", token)
.SetParameter("StartDate", startDate)
.SetParameter("EndDate", endDate)
.List().ToList();
Gültige Antwortergebnismenge in meinem Fall eine Klasse für die Rückgabe, Nur wenn Sie in eine generische Liste exportieren, müssen Sie die generische Klasse angeben. zum Beispiel in meinem Fall ist das Ergebnis ein IList, dann muss ich die Antwort ändern: 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