Есть ли способ запросить хранимую процедуру в Fluent Nhibernate без создания сопоставления файлов hbm.xml?
Fluent NHibernate для запроса хранимой процедуры без отображения hbm.xml
Ответ 1
Я предполагаю, что вы используете стандартный
Session.GetNamedQuery(....
вместо этого вы можете использовать
var result = Session.CreateSQLQuery("exec MyStoredProc :pUserId, :pIsLocked")
.AddEntity(typeof(MyDomainObject))
.SetParameter("pUserId", userId)
.SetParameter("pIsLocked", isLocked)
.List<MyDomainObject>();
Это позволяет вам вызвать сохраненный процесс, но все равно вернуть объект домена (или список), не требуя файла .hbm.xml.
Ответ 2
У вас должен быть класс для возврата набора результатов в моем случае класс 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();