2013-10-18 62 views
-1

我有兩個登記容器:解決命名從溫莎的datacontext組件容器

container.Register(Component.For<DataContext>().LifestylePerWebRequest()); 
container.Register(Component.For<DataContext>().LifestyleTransient().Named("transientContext")); 

我試圖解決命名實例(瞬態)是這樣的:

var instance = Container.Instance.Resolve<DataContext>("transientContext"); 
    instance.Table1.Add(new Table1()); 
    instance.SaveChanges(); 

但在調用SaveChanges( )被拋出一個異常「無效操作,連接關閉」。

可能是什麼問題?

THX!

回答

0

我懷疑溫莎混合起來的決心方法2:然後

Container.Instance.Resolve<T>(object argumentAsAnonymousType) //the one its calling 
Container.Instance.Resolve<T>(string key) //the one it should be calling 

溫莎的對待你的鑰匙「transientContext」作爲DataContext的一個參數。 DataContext的參數是一個連接字符串ref,它導致實體框架拋出給定的異常。要解決您可以使用命名參數:

var instance = Container.Instance.Resolve<DataContext>(key: "transientContext");