J'ai une application multitenant dans Asp.NET MVC avec Ninjul et Fluent nHibernate. J'ai une base de données par locataire et je crée une usine de session pour chaque locataire.Ninject: Transmettre l'objet vers le bas à travers des liaisons pour multitenancy
Maintenant, après les connexions de locataire, j'ai besoin (si ce n'est pas le cas) de créer une SessionFactory et d'en extraire une session. Ça c'est fait.
Mon problème est maintenant que l'information spécifique des locataires est extrait du cookie FormsAuth et je dois la transmettre des couches ...
Voici mes couches: Web service données
Lorsque mes contrôleurs ont besoin d'accéder à certaines informations, ils utilisent le service d'information spécifique pour accéder au référentiel de données avec une session qui vient de l'atelier session.
Dans couche de données:
Bind<SessionFactoryFactory>().ToSelf()
.InSingletonScope();
Bind<ISession>()
.ToMethod(ctx => ctx.Kernel.Get<SessionFactoryFactory>()
.Get(**[??TENANTINFOOBJECT??]**).OpenSession())
.WhenParentNamed("TenantDB")
.InRequestScope();
Bind<ISomeInfoRepository>()
.To<SomeInfoRepository>()
.InRequestScope()
.Named("TenantDB");
Dans Service de couche:
Bind<ISomeInfoService>().To<SomeInfoService>()
.InRequestScope();
Dans Web couche:
public class SomeController : BaseController
{
ISomeInfoService someInfoService;
public SomeController(ISomeInfoService someInfoService)
{
this.someInfoService= someInfoService;
}...
Comment puis-je envoyer à ma sessionfactory les informations sur les locataires avec Ninject? Lorsqu'une requête Web est effectuée, j'extraire l'ID du locataire du cookie et peut générer l'objet client requis (id + chaîne de connexion). Comment puis-je transmettre les couches avec Ninject à ma SessionFactoryFactory?
Avez-vous un accès à votre conteneur Ninject à partir de votre application MVC? – Restuta
Je le fais, mais je préfère ne pas l'utiliser car ce ne serait pas convivial. Mis à part un NinjectModule pour les liaisons, le Data Layer ne connaît pas Ninject. – Nick
Qu'est-ce qui ne serait pas facile à tester? – Restuta