成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LINQ to SQL Northwind對象

開發 后端
這里介紹LINQ to SQL Northwind對象,LINQ to SQL 基于由 ADO.NET 提供程序模型提供的服務。因此,我們可以將 LINQ to SQL 代碼與現有的 ADO.NET 應用程序混合在一起,將當前 ADO.NET 解決方案遷移到 LINQ to SQL。

LINQ有很多值得學習的地方,這里我們主要介紹LINQ to SQL,包括介紹ADO.NET連接創建LINQ to SQL Northwind對象等方面。

ADO.NET與LINQ to SQL

LINQ to SQL 基于由 ADO.NET 提供程序模型提供的服務。因此,我們可以將 LINQ to SQL 代碼與現有的 ADO.NET 應用程序混合在一起,將當前 ADO.NET 解決方案遷移到 LINQ to SQL。

一.連接

在創建 LINQ to SQL DataContext 時,可以提供現有 ADO.NET 連接。對 DataContext 的所有操作(包括查詢)都使用所提供的這個連接。如果此連接已經打開,則在您使用完此連接時,LINQ to SQL 會保持它的打開狀態不變。我們始終可以訪問此連接,另外還可以使用 Connection 屬性自行關閉它。

  1. //新建一個標準的ADO.NET連接:  
  2. SqlConnection nwindConn = new SqlConnection(connString);  
  3. nwindConn.Open();  
  4. // ... 其它的ADO.NET數據操作代碼... //  
  5. //利用現有的ADO.NET連接來創建一個DataContext:  
  6. Northwind interop_db = new Northwind(nwindConn);  
  7. var orders = from o in interop_db.Orders where o.Freight > 500.00M select o;  
  8. //返回Freight>500.00M的訂單  
  9. nwindConn.Close(); 

語句描述:這個例子使用預先存在的ADO.NET連接創建Northwind對象,本例中的查詢返回運費至少為500.00 的所有訂單。

二.事務

當我們已經啟動了自己的數據庫事務并且我們希望DataContext 包含在內時,我們可以向 DataContext 提供此事務。
通過 .NET Framework 創建事務的首選方法是使用 TransactionScope 對象。通過使用此方法,我們可以創建跨數據庫及其他駐留在內存中的資源管理器執行的分布式事務。事務范圍幾乎不需要資源就可以啟動。它們僅在事務范圍內存在多個連接時才將自身提升為分布式事務。

  1. using (TransactionScope ts = new TransactionScope())  
  2. {  
  3. db.SubmitChanges();  
  4. ts.Complete();  

注意:不能將此方法用于所有數據庫。例如,SqlClient 連接在針對 SQL Server 2000 服務器使用時無法提升系統事務。它采取的方法是,只要它發現有使用事務范圍的情況,它就會自動向完整的分布式事務登記。

下面用一個例子說明一下事務的使用方法。在這里,也說明了重用 ADO.NET 命令和 DataContext 之間的同一連接。

  1. var q =  
  2. from p in db.Products  
  3. where p.ProductID == 3  
  4. select p;  
  5. //使用LINQ to SQL查詢出來  
  6. //新建一個標準的ADO.NET連接:  
  7. SqlConnection nwindConn = new SqlConnection(connString);  
  8. nwindConn.Open();  
  9. //利用現有的ADO.NET連接來創建一個DataContext:  
  10. Northwind interop_db = new Northwind(nwindConn);  
  11. SqlTransaction nwindTxn = nwindConn.BeginTransaction();  
  12. try  
  13. {  
  14. SqlCommand cmd = new SqlCommand("UPDATE Products SET"  
  15. +"QuantityPerUnit = 'single item' WHERE ProductID = 3");  
  16. cmd.Connection = nwindConn;  
  17. cmd.Transaction = nwindTxn;  
  18. cmd.ExecuteNonQuery();  
  19. interop_db.Transaction = nwindTxn;  
  20. Product prod1 = interop_db.Products.First(p => p.ProductID == 4);  
  21. Product prod2 = interop_db.Products.First(p => p.ProductID == 5);  
  22. prod1.UnitsInStock -3;  
  23. prod2.UnitsInStock -5;//這有一個錯誤,不能為負數  
  24. interop_db.SubmitChanges();  
  25. nwindTxn.Commit();  
  26. }  
  27. catch (Exception e)  
  28. {  
  29. //如果有一個錯誤,所有的操作回滾  
  30. Console.WriteLine(e.Message);  
  31. }  
  32. nwindConn.Close(); 

語句描述:這個例子使用預先存在的 ADO.NET 連接創建Northwind對象,然后與此對象共享一個 ADO.NET 事務。此事務既用于通過 ADO.NET 連接執行 SQL 命令,又用于通過Northwind對象提交更改。當事務因違反 CHECK 約束而中止時,將回滾所有更改,包括通過 SqlCommand 做出的更改,以及通過Northwind對象做出的更改。

三.直接執行 SQL語句

1.直接執行SQL查詢

如果 LINQ to SQL 查詢不足以滿足專門任務的需要,我們可以使用 ExecuteQuery 方法來執行 SQL 查詢,然后將查詢的結果直接轉換成對象。

  1. var products = db.ExecuteQuery<Product>(  
  2. "SELECT [Product List].ProductID,"+  
  3. "[Product List].ProductName " +  
  4. "FROM Products AS [Product List] " +  
  5. "WHERE [Product List].Discontinued = 0 " +  
  6. "ORDER BY [Product List].ProductName;"  
  7. ); 

語句描述:這個例子使用ExecuteQuery<T>執行任意 SQL 查詢,并將所得的行映射為 Product 對象的序列。

2.直接執行SQL命令

采用DataContext 連接時,可以使用ExecuteCommand來執行不返回對象的 SQL 命令。

  1. db.ExecuteCommand  
  2. ("UPDATE Products SET UnitPriceUnitPrice = UnitPrice + 1.00"); 

語句描述:使用ExecuteCommand執行任意SQL命令,本例中為將所有產品單價提高 1.00 的批量更新。以上介紹ADO.NET連接創建LINQ to SQL Northwind對象。

【編輯推薦】

  1. Linq匿名類型簡單概述
  2. Linq隨機讀取數據淺析
  3. Linq Lambda表達式全面分析
  4. Linq擴展方法簡單分析
  5. 初探Linq局部變量類型
責任編輯:佚名 來源: IT專家網
相關推薦

2009-09-15 10:12:37

LINQ To SQL

2009-09-07 17:32:14

LINQ檢索數據

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-09-09 14:40:43

Linq to sql

2009-09-10 11:29:00

LINQ to SQL

2009-09-11 12:08:09

Linq to SQL

2009-09-11 12:13:40

LINQ to SQL

2009-09-15 17:07:24

Linq To SQL

2009-09-16 17:33:16

LINQ TO SQL

2009-09-18 14:51:19

LINQ TO SQL

2009-09-08 13:16:01

Linq to SQL

2009-09-07 17:09:45

Linq To Sql

2009-09-08 13:07:15

介紹Linq to S

2009-09-10 10:37:15

LINQ to SQL

2009-09-09 18:03:47

LINQ to SQL

2009-09-10 18:02:23

LINQ to SQL

2009-09-15 10:46:04

LINQ to SQL

2009-09-16 09:38:27

LINQ To SQL

2009-09-18 16:41:46

Linq to sql

2009-09-11 09:41:19

LINQ to SQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区高清 | 澳门永久av免费网站 | 午夜激情在线视频 | 亚洲精品久久久一区二区三区 | 久久99国产精品久久99果冻传媒 | 日韩免费网站 | 亚洲欧美日韩精品久久亚洲区 | 日韩高清一区 | www国产精品 | 欧美福利视频 | 国产www成人 | 一区二区三区影院 | 色久影院 | 精品国产乱码一区二区三区a | 久久综合久色欧美综合狠狠 | 国产成人综合在线 | 中文字幕日韩专区 | 一级日韩 | 国产精品国产三级国产播12软件 | 久久国产亚洲 | 国产清纯白嫩初高生在线播放视频 | 成年网站在线观看 | 日韩精品免费视频 | 久久一日本道色综合久久 | 日日碰狠狠躁久久躁96avv | 99久久久久久久久 | 九九热在线视频免费观看 | 黄色网毛片 | 国产成人精品一区二区三区在线 | 91视视频在线观看入口直接观看 | 中文字幕亚洲精品 | 成人午夜在线观看 | 国产成人一区二区三区 | 国产激情小视频 | 成人国产精品入口免费视频 | 一区二区免费 | 国产一级毛片视频 | 亚洲一区二区av在线 | 国产精品电影网 | 黄免费看| 91网视频 |