我使用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实例。也许你知道更好的解决方案......
谢谢你的建议。
答案 0 :(得分:2)
为什么需要扩展方法来执行此操作?您应该放弃扩展方法,只使用static
方法(和static class
)。我还发现了一篇文章,我认为它可以帮到你:
Managing Entity Framework ObjectContext lifespan and scope in n-layered ASP.NET applications