0

通常,使用dbContextfrom Entity Framework 的代码如下所示:

using (var context = new SMDbContext())
{
    context.StartTransaction();

    var userCrudLogic = new UserEntityCrudLogic(context);
    userCrudLogic.CreateUser(...);

    context.SaveChanges();
    context.Commit();
}

就我而言,我想在 Web 服务中使用它,而不是调用我的 CRUD 逻辑,我想调用业务逻辑来做一些验证和其他事情。之后的业务逻辑会调用 CRUD 逻辑。

我的问题是我不知道如何将上下文存储或传递给 CRUD 逻辑。最简单的方法是使用参数,但我不想在所有业务逻辑功能中都有不需要的参数。

我认为最好有一个类似“上下文管理器”的东西,它负责存储和提供当前请求的上下文。比我可以使用 IoC 或类似的东西在需要的地方加载上下文。

但是这样的“经理”应该是什么样子以及我必须如何/在哪里存储它?

如果我在 IoC 中将其注册为单例(in global.asax),它将在所有请求中共享还是对每个请求都是唯一的?

对不起,如果我的问题看起来很愚蠢或类似的东西,但我以前从未做过这样的事情,现在想学习它们!所以我不想让它工作,我想知道最好的方法是什么。如果有什么不清楚的,请尽管问!

问候

4

2 回答 2

1

您可能必须为您的 Web 应用程序配置每个请求的上下文。做一个谷歌,你会在 ASP.NET MVC 中得到类似这样的缓存实体框架 DbContexts 每个请求和一个 DbContext(没有 IOC 容器)

于 2012-06-08T14:57:25.273 回答
0

我很确定如果 Web 服务客户端启用了 cookie 并且您正在存储会话数据,那么您应该能够使用 Session 对象来存储它。我不确定这是多么明智或安全。

于 2012-06-08T14:42:13.817 回答