Отображение Nhibernate по коду, как использовать хранимую процедуру? - PullRequest
2 голосов
/ 09 января 2012

Я использую новое сопоставление функций nhibernate 3.2 по коду (и оно работает очень хорошо).

Пример:

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

Я бы хотел использовать хранимую процедуру. В старой версии nhibernate я использую файл hbm.xml, например

<?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>

Я использовал это так:

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

Есть ли новый синтаксис? или использовать старый стиль?

Привет

Ответы [ 3 ]

3 голосов
/ 09 января 2012

Я нашел решение для NHibernate 3.2 Отображение по условной (кодовой) хранимой процедуре

Мне нужно смешать hbm.xml и отображение по коду.срhttp://puredotnetcoder.blogspot.com/2011/07/mixed-mappings-with-hbm-and-mapping-by.html

Теперь я должен проверить это

2 голосов
/ 08 декабря 2014

У вас должен быть класс для возврата набора результатов, в моем случае это класс 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();

2 голосов
/ 09 января 2012

Я уверен, что вы не можете сделать это с FluentNHibernate.Вы можете использовать sprocs в отображениях, только если они напрямую связаны с операциями CRUD.Однако вы можете использовать гибридную конфигурацию FluentNHibernate - файлы Fluent Mappings и HBM.

...