0

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

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吗?

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

4

1 回答 1

1

应该没问题,实际上您提到的大多数解决方案可能在引擎盖下都做了非常相似的事情。一个问题是,也可以为静态资源(js、css 等)调用此代码。

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

于 2013-03-19T18:53:40.283 回答