2
我在ASP.NET MVC應用程序上使用StructureMap與實體框架和IRepository/IUnitOfWork模式。我們的目標是讓所有的對象限制在當前的HTTP請求,如下所示:StructureMap,實體框架和IRepository/IUnitOfWork配置
For<ObjectContext>()
.HttpContextScoped()
.Use<MembershipEntities>()
.Ctor<string>("connectionString")
.Is("name=MembershipEntities")
.Named(MembershipObjectContextInstanceKey);
For<IObjectContext>()
.HttpContextScoped()
.Use<ObjectContextAdapter>()
.Ctor<ObjectContext>("objectContext")
.Is(c => c.GetInstance<ObjectContext>(MembershipObjectContextInstanceKey))
.Named(MembershipIObjectContextInstanceKey);
For<IUnitOfWork>()
.HttpContextScoped()
.Use<UnitOfWork>()
.Ctor<IObjectContext>("objectContext")
.Is(x => x.GetInstance<IObjectContext>(MembershipIObjectContextInstanceKey))
.Named(MembershipUOWInstanceKey);
For(typeof(IRepository<>))
.HttpContextScoped()
.Use(typeof(Repository<>))
.CtorDependency<IObjectContext>("objectContext")
.IsNamedInstance(MembershipIObjectContextInstanceKey)
.Named(MembershipIRepositoryInstanceKey);
然而,當我運行此代碼,並得到一個IRepository和IUnitOfWork的命名實例,其內部IObjectContexts不同樣的例子,這不是我的意圖。
關於我在做什麼錯的任何想法?非常感激任何的幫助!