有没有理由使用一个DataContext实例,而不是几个?

时间:2010-01-05 09:02:59

标签: linq-to-sql datacontext

例如,我有两种方法使用一个DataContext(Linq to sql)。

 using(DataContext data = new DataContext){
   // doing something
   another_datamethod(data);
 }

 void another_datamethod(DataContext data){
   // doing
 }

使用这种风格?或者使用相同的结果,我可以创建单独的“using DataContext”。如果我使用一个DataContext,我会实现什么好处?也许有一些缓存可能性?

2 个答案:

答案 0 :(得分:0)

最近,由于多个问题(包括创建与查找表关联的记录),我已经阅读了大量“强烈推荐”您为应用程序使用多个DataContexts的文章和博客。当我学习LINQ-to-SQL时,对我来说最吸引人的特性之一就是能够将我的完整数据库模式导入到一个“大”DataContext中。所以,这就是我所做的......但是几个月来,矛盾的信息说我所做的是一件坏事。该怎么做,做什么......

九个月后,这就是我的立场。我的单个大型DataContext 仍然我的单个大型DataContext。我有超过30个数据存储库类访问其中包含的六十多个表,我仍然没有看到打破现有数据dom或使用单个DataContext不处理下一个项目的正当理由。文章和博客作者遇到的问题都是有效的问题。然而,像大多数技术一样,从来没有一种方法可以做。我的时间和精力的最大投入是学习并真正理解LINQ-to-SQL如何做它的功能。我发现帮助我完成这本书的最好的书是Pro LINQ: Language Integrated Query in C# 2008作者:Joseph C. Rattz,Jr。LINQ-to-SQL报道详细而清晰,有很多例子可以澄清这个谜。 / p>

因此,在您的情况下,创建一个大的DataContext或创建许多较小的...这个选择取决于您。较小的那些显然提供了更好的重用机会,而一个较大的那些有助于增加您可以专注于业务逻辑和表示代码的时间。

答案 1 :(得分:-1)

Datacontexts跟踪更改并进行缓存,因此根据您正在执行的工作,可能会进行缓存。