Linq To Sql 它的优点我就不说了,随便上网找,一大堆。我就说说效率。
大家都知道 Pooling 吧,如果不考虑 pool 本身的开销,适当的用Pooling 模式将大大的提高访问速度。
所以写下面的代码测试一下linq 咋样,结果下一大跳。先是一般的链接。
string s = "Data Source=HOME;Initial Catalog=TEST;Integrated Security=True; Pooling=False";
for (int i = 0; i < 5; i++)
{
    using (SqlConnection con = new SqlConnection(s))
    {
                    con.Open();
                    con.Close();
    }
}
打开Sql Server Profiler, 执行上面代码,结果看到 5次 login logout,
然后将链接字符串里面的Pooling=False去掉在再执行,发现这回只有一次 login logout, 说明用的是一个链接。pooling 其作用了。然后测试 linq to sql把 for 里面改成下面代码
                using (DataClasses1DataContext con = new DataClasses1DataContext())
                {
                    con.TestData.Count();
                }
结果发现有 5 次 login, logout.因为Ado.net 链接字符串里面如果不写 pooling 的话,默认是等于pooling = True, 但很显然用 linq to sql 查询是
pooling 没有起作用, 于是干脆显示的写进去,打开Settings.Designer.cs,将链接字符串内加入 pooling = True
然后再试,结果还是5次 login, logout.至此我已经无语了。

解决方案 »

  1.   

    没用还是别用了,一开始你会觉得这东西超级方便。但不久就会发现很多实质性的问题,(最主要的就是效率问题)然后才开始后悔浪费时间。
    再然后,又的浪费时间去把代码改回到直接用 ado.net当然做小玩意用 linq to sql 将能大大的提高工作效率(我指的是工作效率,不是程序的性能)
      

  2.   

    就是说,不管你怎样设定连接字符串里面的 pooling , linq 查询时都是使用 pooling=False模式查询,就是每次查询都打开一个连接。
    这样设计的效率还能好吗!