11
votes

Nibernate et carte de structure

J'aime vraiment travailler avec NHibernate mais toujours utilisé Spring.net avec elle.

J'ai récemment rencontré StructureMap par Jeremy Miller et vraiment comme ça mieux que Spring.Net. Sur son site StructureMap, il promet un exemple sur la manière d'utiliser NHibernate et StructureMap ensemble. Malheureusement, il n'a pas eu le temps de le faire (ou je ne peux pas le trouver).

Est-ce que quelqu'un a un exemple sur la manière de gérer la session de NHibernate avec StructureMap?


2 commentaires

Vous avez envie de cogner cela, j'attendais cet exemple aussi


Lié à Stackoverflow. com / questions / 383440 / ...


3 Réponses :



0
votes
  • Modifier ici: J'ai posté ce commentaire avant que la réponse de Wbinford ait été postée. Je pense toujours que l'utilisation de Ncommon est bonne, mais sa réponse ci-dessus est un peu plus propre et ne nécessite pas l'utilisation d'un autre outil tiers.

    Je n'ai vraiment pas eu les réponses que je cherchais mais j'ai trouvé un joli cadre appelé NOMMON . Il implémente l'unité de motif de travail ainsi que le motif de référentiel avec NHibernate, Linqtosql ou le cadre d'entité. Il a également géré l'isession de NHibernate ainsi que la configuration pour NHibernate. J'ai utilisé l'outil avec structureMap et NHibernate. J'ai dû obtenir l'adaptateur de service pour Structuremap, mais une fois mis en place, cela fonctionne plutôt bien.


2 commentaires

Bonjour Dionysus55, je m'essaie de nous NOMMON avec une carte de structure et im totalement perdue. Avez-vous un exemple de code montrant comment faire cela?


Désolé je n'ai rien que je puisse libérer. Si vous regardez la réponse de Wbinford, il résume le processus. L'URL qu'il pointe de vous aider aussi bien.



23
votes

Donc, je m'excuse de ne pas avoir l'exemple de NHibernate avec un exemple de structure effectué précédemment. Finalement, j'aimerais le publier dans la documentation StructureMap, mais j'ai besoin d'un commentaire d'abord. Vous pouvez voir l'exemple complet sur mon blog:

http://trason.net/journal/2009/10/7/bootstrapping-nibernate-with-tructuremap.html P>

Cela étant dit, je peux frapper les points forts ici. Il y a une NhibernateReRégie qui met à disposition quatre choses: une inhibernate.configuration (en tant que singleton), une isessionFactory (comme un singleton), une isession (hybride scopé (httpContext si disponible en tombant au stockage local)) et un très iunitofwork simple. En outre, il existe une httpmodule pour gérer l'unité de travail par demande Web. P>

Voici le code de NhibernAmereGistry: p>

using System;
using System.Web;
using NHibernateBootstrap.Core.Persistence;
using StructureMap;

namespace NHibernateBootstrap.Web
{
    public class NHibernateModule : IHttpModule
    {
        private IUnitOfWork _unitOfWork;

        public void Init(HttpApplication context)
        {
            context.BeginRequest += ContextBeginRequest;
            context.EndRequest += ContextEndRequest;
        }

        private void ContextBeginRequest(object sender, EventArgs e)
        {
            _unitOfWork = ObjectFactory.GetInstance<IUnitOfWork>();

        }

        private void ContextEndRequest(object sender, EventArgs e)
        {
            Dispose();
        }

        public void Dispose()
        {
            _unitOfWork.Dispose();
        }
    }
}


1 commentaires

Mais ne bloquez-vous pas la base de données pour une demande entière avec cela? Je veux dire que vous commencez la transaction après le démarrage de la demande et de l'engager après la fin.