这种每个请求的上下文实现安全吗?

时间:2013-03-19 18:32:44

标签: c# asp.net entity-framework

假设我有一个这样的助手类:

public static class RequestHelper {
    private const String DbContextKey = "DbContext";

    public static DbContext CurrentDbContext {
        get { return HttpContext.Current.Items[DbContextKey] as DbContext; }
        set { HttpContext.Current.Items[DbContextKey] = value; }
    }
}

然后在我的Global.asax.cs我有:

protected void Application_BeginRequest() {
    RequestHelper.CurrentDbContext = new DbContext("some_conn_string_name");
}

这种设计在所有请求中都是安全的吗?如果我总是通过RequestHelper.CurrentDbContext进行数据访问,我会遇到任何问题吗?

我问的原因是我看到了依赖于依赖注入的更复杂的每个请求的上下文实现。我觉得我必须遗漏一些显而易见的东西,我担心在应用程序中有足够多的用户之前我不会注意到。

1 个答案:

答案 0 :(得分:1)

它应该没问题,事实上你提到的大多数解决方案可能会做一些非常相似的事情。一个问题是,也可以为静态资源(js,css等)调用此代码。

另一个问题是,如果你通过这样做会获得任何收益。如果您的系统非常复杂,您可以考虑使用DI容器之一。如果它不那么复杂,只有在需要时才创建DbContext可能更容易维护。