Question

J'ai un problème en essayant d'utiliser ces trois bibliothèques dans un projet.Je comprends et donc appeler des procédures stockées n'est pas directement pris en charge dans Fluent NHibernate selon leur FAQ.J'ai donc défini un simple fichier hbl.xml avec un mappage pour ma procédure stockée:

<?xml version='1.0' encoding='utf-8'?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="My.Data.Mappings" assembly="My.Data.Mappings">
    <sql-query name="MyStoredProc" callable="true">
        <query-param name="paramA" type="date" />
        <query-param name="paramB" type="int" />
        <return alias="MyResultClass" class="My.Data.Mappings.MyResultClass, EP.Core.Data.Mappings" />
        exec myStoredProc @paramA = :paramA, @paramB = :paramB
    </sql-query>
</hibernate-mapping>

Alors maintenant, dans mon code de service, en utilisant la bibliothèque NCommon, j'ai:

using (var scope = new UnitOfWorkScope())
{
    ...
    DontKnowWhereToGetSessionManager.Instance.Session.GetNamedQuery("MyStoredProc").List<MyResultClass();

    ...
}

Donc, la seule façon que je peux voir pour obtenir DontKnowWhereToGetSessionManager est d'avoir Autofac l'injecter dans mon service.Mais cela semble être le mauvais sens.Existe-t-il un moyen de l'obtenir à partir de UnitOfWorkScope?Ou devrais-je simplement l'injecter avec Autofac?

Était-ce utile?

La solution

Vous pouvez obtenir l'unité de travail actuelle en utilisant la propriété CurrentUnitOfWork de UnitOfWorkScope.

using (var scope = new UnitOfWorkScope())
{
  var session = scope.CurrentUnitOfWork<NHUnitOfwork>().GetSession<MyResultClass>();
  sesion.GetNamedQuery("MyStoredProc").List<MyResultClass>();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top