将数据库上下文ex:mydbEntities声明为以下任何一种含义(在每种情况下):
public static mydbEntities db = new mydbEntities();
公开 mydbEntities db = new mydbEntities();
私有静态 mydbEntities db = new mydbEntities();
私人 mydbEntities db = new mydbEntities();
我正在使用ASP.NET MVC 2。 谢谢!
答案 0 :(得分:2)
static
在这里非常糟糕。数据上下文不与线程很好地匹配,每次都要丢弃它以避免过度使用。您可以使用与当前http上下文相关的静态属性。 那可能有意义。然后它只是一个公共静态属性。
然而,许多人更喜欢IOC和基于实例的上下文;或存储接口后面的上下文。选择是你的。
注意:另一个选项是线程静态的,但不假设您的请求的所有由同一个线程提供服务。所以不要这样做。
答案 1 :(得分:0)
这实际上是一个Ling 2 SQL问题而不是ASP.NET MVC问题(我假设你正在使用它,或者它可能是实体框架)。
在Web应用程序中使用L2SQL时,有些人提倡每个Web请求模式使用DataContext。也就是说,您创建一个DataContext并在整个当前正在执行的Web请求期间保留它。为此,您需要将其存储在HttpContext.Items集合中,如此
HttpContext.Current.Items.Add(“myKey”,new MyDataContext());
...并按原样检索
MyDataContext context = HttpContext.Current.Items [“myKey”] as MyDataContext;
您可能应该创建一些帮助程序类,以便更轻松地访问DataContext并隐藏此代码。