日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
LINQtoSQLNorthwind對象

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

ADO.NET與LINQ to SQL

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

一.連接

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

 
 
 
  1. //新建一個(gè)標(biāo)準(zhǔn)的ADO.NET連接:
  2. SqlConnection nwindConn = new SqlConnection(connString);
  3. nwindConn.Open();
  4. // ... 其它的ADO.NET數(shù)據(jù)操作代碼... //
  5. //利用現(xiàn)有的ADO.NET連接來創(chuàng)建一個(gè)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();

語句描述:這個(gè)例子使用預(yù)先存在的ADO.NET連接創(chuàng)建Northwind對象,本例中的查詢返回運(yùn)費(fèi)至少為500.00 的所有訂單。

二.事務(wù)

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

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

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

下面用一個(gè)例子說明一下事務(wù)的使用方法。在這里,也說明了重用 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. //新建一個(gè)標(biāo)準(zhǔn)的ADO.NET連接:
  7. SqlConnection nwindConn = new SqlConnection(connString);
  8. nwindConn.Open();
  9. //利用現(xiàn)有的ADO.NET連接來創(chuàng)建一個(gè)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;//這有一個(gè)錯(cuò)誤,不能為負(fù)數(shù)
  24. interop_db.SubmitChanges();
  25. nwindTxn.Commit();
  26. }
  27. catch (Exception e)
  28. {
  29. //如果有一個(gè)錯(cuò)誤,所有的操作回滾
  30. Console.WriteLine(e.Message);
  31. }
  32. nwindConn.Close();

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

三.直接執(zhí)行 SQL語句

1.直接執(zhí)行SQL查詢

如果 LINQ to SQL 查詢不足以滿足專門任務(wù)的需要,我們可以使用 ExecuteQuery 方法來執(zhí)行 SQL 查詢,然后將查詢的結(jié)果直接轉(zhuǎn)換成對象。

 
 
 
  1. var products = db.ExecuteQuery(
  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. );

語句描述:這個(gè)例子使用ExecuteQuery執(zhí)行任意 SQL 查詢,并將所得的行映射為 Product 對象的序列。

2.直接執(zhí)行SQL命令

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

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

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


當(dāng)前文章:LINQtoSQLNorthwind對象
文章分享:http://www.dlmjj.cn/article/dhpidgj.html