我想尽量减少使用“使用”的实体框架连接上下文范围,同时我想能够注入一个上下文到我的班级。 我搜索互联网上,但并没有发现像我这样的情况下,还是我只是做错了什么,反正这里是代码:使用语句;为什么我的领域没有设置为空?
[TestFixture]
public class Dummy
{
private IFoo ifoo;
[Test]
public void CreateIfNotExist()
{
using (var foo = GetNewIFoo())
{
foo.Dosomething();
}
Assert.IsNull(ifoo);//test fail here
}
[Test]
public void NotCreateIfExist()
{
ifoo = new Bar();
using (var foo = GetNewIFoo())
{
foo.Dosomething();
}
Assert.IsNull(ifoo);//test fail here
}
private IFoo GetNewIFoo()
{
if (ifoo == null)
{
ifoo = new Foo();//return new Foo();
}
return ifoo;
}
}
第一次测试失败,以foo created-的对象序列> FOO做一些事情 - > foo处理(通过在foo上调用),而状态变量ifoo仍然是Foo()的类型。
第二次测试失败,对象生命序列与之前相同。
我很困惑,因为我认为GetNewIFoo()会返回ifoo的引用,并且使用关键字只会在ifoo上调用dispose?
此外,有没有什么好的方法来控制上下文范围,同时保持注入IContext的能力?
(澄清的称号,因为在C#中的`using`关键字的两个完全不相干的用途; * using语句*和*使用指令*) – 2011-01-20 09:44:55
谢谢你那 – Yuan 2011-01-20 09:47:46