架构:如何在Web服务中存储实体框架的dbContext?

时间:2012-06-08 14:26:19

标签: web-services entity-framework architecture entity-framework-4 n-tier-architecture

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

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

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

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

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

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

我认为像“上下文管理器”这样的东西会更好,它负责存储和提供当前请求的上下文。我可以使用IoC或类似的东西在任何需要的地方加载上下文。

但是,这样的“经理”应该怎样以及如何/在哪里存储呢?

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

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

问候

2 个答案:

答案 0 :(得分:1)

您可能必须使用每个请求的上下文配置Web应用程序。做一个谷歌,你会得到像这样的Caching Entity Framework DbContexts per requestOne DbContext per request in ASP.NET MVC (without IOC container)

答案 1 :(得分:0)

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