Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Windsor容器解析命名datacontext组件_C#_Asp.net Mvc_Asp.net Mvc 4_Castle Windsor - Fatal编程技术网

C# 从Windsor容器解析命名datacontext组件

C# 从Windsor容器解析命名datacontext组件,c#,asp.net-mvc,asp.net-mvc-4,castle-windsor,C#,Asp.net Mvc,Asp.net Mvc 4,Castle Windsor,我有两个集装箱登记: container.Register(Component.For<DataContext>().LifestylePerWebRequest()); container.Register(Component.For<DataContext>().LifestyleTransient().Named("transientContext")); container.Register(Component.For().LifestylePerWebRequ

我有两个集装箱登记:

container.Register(Component.For<DataContext>().LifestylePerWebRequest());
container.Register(Component.For<DataContext>().LifestyleTransient().Named("transientContext"));
container.Register(Component.For().LifestylePerWebRequest());
container.Register(Component.For().LifestyleTransient().Named(“transientContext”);
我已尝试像这样解析命名实例(瞬态):

  var instance = Container.Instance.Resolve<DataContext>("transientContext");
  instance.Table1.Add(new Table1());
  instance.SaveChanges();
var instance=Container.instance.Resolve(“transientContext”);
instance.Table1.Add(newtable1());
SaveChanges();
但是在SaveChanges()上引发了一个异常“操作无效。连接已关闭。”

有什么问题吗


谢谢

我怀疑温莎混淆了它的两种解决方法:

Container.Instance.Resolve<T>(object argumentAsAnonymousType) //the one its calling
Container.Instance.Resolve<T>(string key) //the one it should be calling
Container.Instance.Resolve(object argumentAsAnonymousType)//调用它的那个
Container.Instance.Resolve(字符串键)//它应该调用的
然后,Windsor将您的键“transientContext”作为DataContext的参数。DataContext的参数是一个连接字符串ref,它导致实体框架抛出给定的异常。要解决此问题,您可能可以使用命名参数:

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