我应该只使用一个DataContext吗?

时间:2011-05-17 21:17:19

标签: asp.net linq-to-sql

我是.NET和LINQ to SQL的新手。

到目前为止,我一直在提取数据并填充gridview,一切正常。

然而,当我构建第二页时,我创建了一个新的DataContext(我假设每页使用一个)当我引用我在上一页中使用的表时,它给了我一个“模糊引用”错误,因为我有我在两个DataContexts中的表。从第二个表中删除表后,我可以引用第一个表。

那么,我的整个应用程序只有一个上下文,还是每个表都有一个上下文?也许在我将大多数在同一个环境中一起使用的表格放在哪里之间?

最佳做法是什么?

3 个答案:

答案 0 :(得分:5)

你是否要求(1)你应该编写多少个DataContext类,或者(2)你应该多少次“up up”(实例化)一个DataContext类,这一点并不完全清楚。

如果是(1),您希望为整个应用程序编写一个 DataContext类,除非您的应用程序使用多个数据库。

如果是(2),您通常希望按请求实例化一个DataContext实例,这基本上意味着每页一个。

答案 1 :(得分:3)

我认为最好的做法是使用一个datacontext - 一旦你开始在同一个项目中混合datacontexts和DBML文件,有时候使用相同的表等等,认为在datacontext中使用命名空间开始变得不稳定。

答案 2 :(得分:1)

在LINQ to SQL中,DataContext用作数据库的抽象。如果我正确理解您的问题,您一直在使用两个单独的类,每页定义唯一的DataContexts?您只需要一个可以在应用程序中共享的DataContext类。如果你真的想要,你可以有多个DataContext实例,但我想不到你想要什么时候。

如果您有访问DataContext和表的方式的代码,那将有所帮助。

有关详细信息,请参阅DataContext类的MSDN参考 - DataContext