前面我们学习了使用Dlinq,从面向对象的角度操作数据库的基本一些知识,今天我学习了Dlinq直接执行SQL命令可查询,执行存储过程,事务处理的一些知识,下面是我联系时的一些Demo。
     在这次学习前先向大家将两个Dlinq的知识:
     1:使用工具生成实体。
     前面学习的时候大家可能感觉最麻烦的是根据数据库写映射实体,vs专门提供了工具(C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\SqlMetal.exe)方便我们自动生成实体,
     SqlMetal /server:.\SQLExpress /database:Northwind /pluralize /namespace:Arcadia /code:d:\Northwind.cs
  大家可以在d:目录下找到Northwind.cs,将其拷贝到您的工程下,下面我们的代码就是在此文件下操作。

     2:显示Linq语句编译后的Sql语句
     方法1:用DataContext的Log属性。db.Log = Response.Output;
     方法2:用GetQueryText / GetChangeText。GetQueryText用于查询时使用,GetChangeText用于更新或删除。
Linq学习笔记(2.3)——DLinq高级操作var products = db.Products.Where(p => p.OrderDetails.Count > 50);
Linq学习笔记(2.3)——DLinq高级操作Response.Write(db.GetQueryText(products));
Linq学习笔记(2.3)——DLinq高级操作

ExecuteQuery
Linq学习笔记(2.3)——DLinq高级操作    Northwind db = new Northwind("data source=.\\SQLEXPRESS;Integrated Security=SSPI;");
Linq学习笔记(2.3)——DLinq高级操作    var products 
= db.ExecuteQuery<Product>("select * from Products where ProductID<10");
Linq学习笔记(2.3)——DLinq高级操作    products.ToList().ForEach(p 
=> Response.Write(p.ProductName + "<br>"));
Linq学习笔记(2.3)——DLinq高级操作

ExecuteCommand
Linq学习笔记(2.3)——DLinq高级操作   Northwind db = new Northwind("data source=.\\SQLEXPRESS;Integrated Security=SSPI;");
Linq学习笔记(2.3)——DLinq高级操作    db.ExecuteCommand(
"update [Products] set [ProductName] = {0} where [ProductID]={1}""Young's book"1);

ExecuteCommand用户更新,删除等操作, ExecuteQuery用于查询操作,所以在执行存储过程时要根据情况使用不同的语句。
Linq学习笔记(2.3)——DLinq高级操作        Northwind db = new Northwind("data source=.\\SQLEXPRESS;Integrated Security=SSPI;");
Linq学习笔记(2.3)——DLinq高级操作        var orders 
= db.ExecuteQuery<Order>("exec CustOrdersOrders @CustomerID={0}""ALFKI");
Linq学习笔记(2.3)——DLinq高级操作        orders.ToList().ForEach(o 
=> Response.Write(o.OrderID + "<br>"));
Linq学习笔记(2.3)——DLinq高级操作

Transactions
Linq学习笔记(2.3)——DLinq高级操作Northwind db = new Northwind("data source=.\\SQLEXPRESS;Integrated Security=SSPI;");
Linq学习笔记(2.3)——DLinq高级操作
Linq学习笔记(2.3)——DLinq高级操作        
if (db.Connection != null) db.Connection.Open();
Linq学习笔记(2.3)——DLinq高级操作        db.Transaction 
= db.Connection.BeginTransaction();
Linq学习笔记(2.3)——DLinq高级操作        IEnumerator
<OrderDetail> orders = db.OrderDetails.Where(o => o.ProductID == 1).GetEnumerator();        
Linq学习笔记(2.3)——DLinq高级操作        
while (orders.MoveNext())
        }
    官方的文档介绍Dinq的Transaction这样使用的,不过我有一点不明白,即使不使用Transaction,我测试SubmitChanges()本身就有类似Transaction的功能,如果一系列操作中有一个操作失败,这一系列操作都不会成功,请高手分析一下使用Transaction和直接SubmitChanges()的区别。
     上面这些是用来弥补Dlinq不好用对象处理的复杂数据库操作情景,上面的例子很简单,为了方便理解其使用方法。

相关文章:

  • 2021-05-31
  • 2022-12-23
  • 2022-01-06
  • 2021-10-11
  • 2022-03-07
  • 2021-07-18
  • 2021-11-24
  • 2021-10-21
猜你喜欢
  • 2021-10-20
  • 2022-12-23
  • 2022-12-23
  • 2021-04-21
  • 2021-12-28
  • 2022-03-03
相关资源
相似解决方案