我是一个巨大的LINQ2SQL粉丝。但是我在每个函数中使用了很多DataContext并随后使用了查询。但是,我知道有更好的方法来做到这一点......
这样的事,也许?
protected dbMYDataContext FA(dbMYDataContext dt)
{
using (dt = new dbMYDataContext())
{
return dt;
}
}
protected void FunctionA() : FA
{
}
protected void FunctionB() : FA
{
}
所以,只要你想创建一个DataContext,继承或调用这个函数FA就可以了。但是,当我继承它时,我会收到错误。似乎是什么问题以及减少DataContext使用的最佳实践是什么。
通知书?
答案 0 :(得分:1)
在使用L2S时我会做一些事情,这些事情很好地改进了很多东西。
1)使用您在问题中显示的使用语句。这是正确的做事方式
2)如果我正在进行只读查询...我设置(DataContext).ObjectTrackingEnabled = false。这基本上不跟踪对象并稍微改善性能。默认设置为true。
3)如果我在一个程序中使用超过5次的查询,我会预编译查询以使事情比他们更快地发生。这种方法有一些注意事项,但最后使用.ToList()似乎可以解决所有问题:D跟进链接:http://www.codinghorror.com/blog/2010/03/compiled-or-bust.html
值得记住的是,每次创建数据上下文时,都会获得最新数据。例如,你创建了一个数据上下文的类实例,另一个用户更新了一个表,你不会看到它(或者至少我从来没有看到它,但它可能是我做事的方式。所以要警告)。 :)
示例代码(未测试):
protected void MyFunction()
{
using(MyDataContext db = new MyDataContext())
{
// uncomment the following line for read only queries
// db.ObjectTrackingEnabled = false;
// implementation here
}
}
答案 1 :(得分:1)
使用工作单元模式