【发布时间】:2021-10-28 04:43:29
【问题描述】:
我有一个疑问,因为我是依赖注入和 IoC 的新手。
我有一个领域层(带有业务逻辑)和一个数据层。我们不实现存储库,我们直接使用 EF Core。 它是一个类库项目,我们在 ASP.NET CCore Web API、WinForms 和另一个框架中使用它。
这个想法是在一个范围内使用相同的上下文。
问题是我无法在嵌套方法执行中获得相同的上下文,我确定是因为我没有完全理解这个概念,你们能帮我吗?
例子:
public class MyTest
{
public void TestContainer()
{
var parentContext = MyContainer.Container.GetInstance<MyContext>();
TestParentAndChildContext(parentContext);
}
private void TestParentAndChildContext(MyContext parentContext)
{
var childContext = MyContainer.Container.GetInstance<MyContext>();
Assert.AreEqual(parentContext, childContext);
}
}
public class MyContainer
{
public static Container Container
{
get { return container ?? (container = RegisterAndVerifyContainer()); }
}
private static Container RegisterAndVerifyContainer()
{
var container = new Container();
container.Options.DefaultScopedLifestyle = new ExecutionContextScopeLifestyle();
container.Register<DbContext, MyContext>(Lifestyle.Scoped);
container.Verify();
return container;
}
}
【问题讨论】:
标签: c# dbcontext simple-injector