Linq TO SQL中ADO.NET与Linq的整合使用

本文介绍如何将ADO.NET代码与LinqToSQL相结合,实现数据操作的统一管理和事务处理。通过示例代码展示了如何在一个项目中同时使用这两种技术进行数据库交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在遇到一个问题,我有一部分代码是用ADO.NET写的,我想加入Linq To SQL怎么办?
看下面代码:
 1  string  connString  =   @" Data Source=.\SQLEXPRESS;AttachDbFilename=c:\northwind.mdf;
 2      Integrated Security=True; Connect Timeout=30; User Instance=True " ;
 3  SqlConnection nwindConn  =   new  SqlConnection(connString);//创建一个链接对象
 4  nwindConn.Open();
 5 
 6  Northwnd interop_db  =   new  Northwnd(nwindConn);//创建DataContext对象
 7 
 8  SqlTransaction nwindTxn  =  nwindConn.BeginTransaction();//创建一个事务
 9 
10  try
11  {
12      SqlCommand cmd  =   new  SqlCommand(
13           " UPDATE Products SET QuantityPerUnit = 'single item' WHERE ProductID = 3 " );
14      cmd.Connection  =  nwindConn;
15      cmd.Transaction  =  nwindTxn;
16      cmd.ExecuteNonQuery();//使用ADO.NET执行更新操作
17 
18      interop_db.Transaction  =  nwindTxn;//给DataContext添加一个事务
19 
20      Product prod1  =  interop_db.Products
21          .First(p  =>  p.ProductID  ==   4 );
22      Product prod2  =  interop_db.Products
23          .First(p  =>  p.ProductID  ==   5 );
24      prod1.UnitsInStock  -=   3 ;
25      prod2.UnitsInStock  -=   5 ;
26 
27      interop_db.SubmitChanges();//执行操作
28 
29      nwindTxn.Commit();//提交事务
30  }
31  catch  (Exception e)
32  {
33      Console.WriteLine(e.Message);
34      Console.WriteLine( " Error submitting changes all changes rolled back. " );
35  }
36 
37  nwindConn.Close();
Northwnd 是一个DataContext对象,好比我们创建Linq中的xxxxDataContext对象一样.
看到代码是不是感觉整合起来是那么的简单?
那么为什么两个东西可以整合到一起呢?因为 LINQ To SQL 是 ADO.NET 系列技术的一部分,是基于由 ADO.NET 提供的服务,您就可以重复使用 ADO.NET 命令和一个 DataContext 之间的连接.

再给一个非常直观的方法.在Linq中执行一条SQL语句使用以下代码:
1  DataContext.ExecuteCommand( " UPDATE Products SET UnitPrice = UnitPrice + 1.00 " );
很熟悉吧.是不是有点像企业库的SQL操作?
大家应该都知道Linq To SQL是生成了一连串的SQL字符串,最后执行操作的,实际上是对ADO.NET的一个封装而已.


                      ----
原创

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值