首页 新闻 搜索 专区 学院

关于linq to sql 创建 DataContext 的问题

0
悬赏园豆:100 [已关闭问题]

请教大家一下!我在自己的应用中如果每个查询方法都new DataContext()(新建一个)的话。性能好像变的非常差!

但是如果我只创建一个DataContext。然后每个查询方法都使用这个DataContext。又经常会出错!都是提示已经打开一个链接。必须关闭后才能再打开之类的错误!

我该如何使用这个DataContext??可以让性能提升。又不会出现上面的错误!

问题补充: 补充说明下:我采用的就是单列模式。所以在只new 一个 DataContext时。经常会出现 已经打开一个DataReader。必须先关闭之类的错误!(我个人的理解是:就是因为才一个DataContext,所以有时候当同时进行2个查询的话会出现这个错误。不知道是否理解的有错!)所以我才在每个查询方法中都使用new DataContext,但是性能变的超差! 应该怎么样解决?
linmadan的主页 linmadan | 初学一级 | 园豆:50
提问于:2009-04-16 02:45
< >
分享
其他回答(2)
0

现在一般都是在需要查询是NEW一个新的,如下:

using(DataContext dc=new DataContext())

{

...

}

 

PS:不过我个人倒是一直用一个....也没出现你那个问题..

墙头草 | 园豆:6 (初学一级) | 2009-04-16 06:55
0

你可以使用单例模式,或者把业务层抽象一个基类,在初始化时,把DataContext实例化一下,这样子类在调用的时候,只需要直接使用dc.method() 了。

James.Ying | 园豆:1472 (小虾三级) | 2009-04-16 09:37
0

请教一下各位大虾,DataContext连接SQL Server 时的连接字符串是怎么写的啊,偶写成下面这样连不上

        private void DataContextTestForm_Load(object sender, EventArgs e)
        {
            SqlConnection sqlConn = new SqlConnection("server=localhost;uid=Amytal;pwd=amytal;database=Test;security=True;User Instance=True");
            DataContext ctx = new DataContext(sqlConn);
            Table<Customer> Customers = ctx.GetTable<Customer>();
            dgv_customers.DataSource = from c in Customers
                                       where c.CustomerID.StartsWith("3")
                                       select new { 顾客ID = c.CustomerID, 顾客名称 = c.Name, 顾客地址 = c.City };
        }

amytal | 园豆:225 (菜鸟二级) | 2013-01-18 13:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册