哪里是存储ObjectContext实例的最佳位置?

时间:2009-03-15 09:57:17

标签: c# asp.net-mvc linq-to-sql entity-framework

我使用Object的扩展名,因为它提供了非常短的可访问字符串。

public static BusinessLayer.Models.SearchEngineEntities db(this object o)
    {

        if (HttpContext.Current == null)
            return new BusinessLayer.Models.SearchEngineEntities(ConfigurationManager.ConnectionStrings["SearchEngineEntities"].ConnectionString);

        if (HttpContext.Current.Items.Contains("DataContext"))
        {
            return (BusinessLayer.Models.SearchEngineEntities)HttpContext.Current.Items["DataContext"];
        }

        BusinessLayer.Models.SearchEngineEntities context = new BusinessLayer.Models.SearchEngineEntities(ConfigurationManager.ConnectionStrings["SearchEngineEntities"].ConnectionString);
        HttpContext.Current.Items.Add("DataContext", context);
        return context;
    }

所以在结果中我有执行字符串,如:

"".db().Users.Include("")....

但我不是百分百肯定这是最好的解决方案。我希望你比我更清楚,在哪里以及如何存储DataContext或ObjectContext实例。也许你知道更好的解决方案......

谢谢你的建议。

1 个答案:

答案 0 :(得分:2)

为什么需要扩展方法来执行此操作?您应该放弃扩展方法,只使用static方法(和static class)。我还发现了一篇文章,我认为它可以帮到你:

Managing Entity Framework ObjectContext lifespan and scope in n-layered ASP.NET applications