通常,使用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
中),它是否会在所有请求中共享,还是每个请求都是唯一的?
很抱歉,如果我的问题看似愚蠢或类似的事情,但我以前从未做过这样的事情,现在想要学习它们!所以我不想让它工作,我想知道最好的方法是什么。如果有什么不清楚的地方,请问问!
问候
答案 0 :(得分:1)
您可能必须使用每个请求的上下文配置Web应用程序。做一个谷歌,你会得到像这样的Caching Entity Framework DbContexts per request和One DbContext per request in ASP.NET MVC (without IOC container)
答案 1 :(得分:0)
我很确定如果Web服务客户端启用了cookie并且您正在存储会话数据,那么您应该能够使用Session对象来存储它。我不确定那是多么明智或安全。