新聞中心
實現(xiàn)LINQ to SQL刪除行是用到什么方法呢?具體的步驟又是什么呢?那么我們下面來具體看看在數(shù)據(jù)庫中如何實現(xiàn)LINQ to SQL刪除行的操作。希望對你了解和掌握這個技術(shù)有所幫助。

創(chuàng)新互聯(lián)服務(wù)項目包括修水網(wǎng)站建設(shè)、修水網(wǎng)站制作、修水網(wǎng)頁制作以及修水網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,修水網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到修水省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
可以通過將對應(yīng)的 LINQ to SQL對象從其與表相關(guān)的集合中刪除來刪除數(shù)據(jù)庫中的行。LINQ to SQL 會將更改轉(zhuǎn)換為相應(yīng)的 SQL DELETE 命令。
實現(xiàn)LINQ to SQL刪除行要注意的事項:
LINQ to SQL不支持且無法識別級聯(lián)刪除操作。如果要在對行有約束的表中刪除行,則必須完成以下任務(wù)之一:
◆在數(shù)據(jù)庫的外鍵約束中設(shè)置 ON DELETE CASCADE 規(guī)則。
◆使用自己的代碼首先刪除阻止刪除父對象的子對象。
否則會引發(fā)異常。請參見本主題中后面的第二個代碼示例。
實現(xiàn)LINQ to SQL刪除行說明:
您可以重寫 Insert、Update 和 Delete 數(shù)據(jù)庫操作的 LINQ to SQL默認方法。有關(guān)更多信息,請參見 自定義插入、更新和刪除操作 (LINQ to SQL)。使用 Visual Studio 的開發(fā)人員可以使用 對象關(guān)系設(shè)計器 來開發(fā)用于實現(xiàn)相同目的的存儲過程。有關(guān)更多信息,請參見 對象關(guān)系設(shè)計器(O/R 設(shè)計器).以下步驟假定您已通過有效的 DataContext 連接到 Northwind 數(shù)據(jù)庫。有關(guān)更多信息,請參見 如何:連接到數(shù)據(jù)庫 (LINQ to SQL)。刪除數(shù)據(jù)庫中的行查詢數(shù)據(jù)庫中要刪除的行。調(diào)用 DeleteOnSubmit 方法。將更改提交到數(shù)據(jù)庫。
實現(xiàn)LINQ to SQL刪除行實例:
這***個代碼示例查詢數(shù)據(jù)庫中 11000 號訂單的詳細信息,將這些訂單詳細信息標(biāo)記為刪除,然后將這些更改提交到數(shù)據(jù)庫。
- // Query the database for the rows to be deleted.
- var deleteOrderDetails =
- from details in db.OrderDetails
- where details.OrderID == 11000
- select details;
- foreach (var detail in deleteOrderDetails)
- {
- db.OrderDetails.DeleteOnSubmit(detail);
- }
- try
- {
- db.SubmitChanges();
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- // Provide for exceptions.
- }
在第二個示例中,目的是刪除訂單(10250 號)。代碼首先檢查 OrderDetails 表以查看要刪除的訂單是否有子項。如果訂單有子項,則首先將子項標(biāo)為刪除,然后將訂單標(biāo)為刪除。 DataContext 為實際刪除設(shè)置正確的順序,以使發(fā)送到數(shù)據(jù)庫的刪除命令遵守數(shù)據(jù)庫約束。
實現(xiàn)LINQ to SQL刪除行實例:
- Northwnd db = new Northwnd(@"c:\northwnd.mdf");
- db.Log = Console.Out;
- // Specify order to be removed from database
- int reqOrder = 10250;
- // Fetch OrderDetails for requested order.
- var ordDetailQuery =
- from odq in db.OrderDetails
- where odq.OrderID == reqOrder
- select odq;
- foreach (var selectedDetail in ordDetailQuery)
- {
- Console.WriteLine(selectedDetail.Product.ProductID);
- db.OrderDetails.DeleteOnSubmit(selectedDetail);
- }
- // Display progress.
- Console.WriteLine("detail section finished.");
- Console.ReadLine();
- // Determine from Detail collection whether parent exists.
- if (ordDetailQuery.Any())
- {
- Console.WriteLine(
- "The parent is presesnt in the Orders collection.");
- // Fetch Order.
- try
- {
- var ordFetch =
- (from ofetch in db.Orders
- where ofetch.OrderID == reqOrder
- select ofetch).First();
- db.Orders.DeleteOnSubmit(ordFetch);
- Console.WriteLine(
- "{0} OrderID is marked for deletion.",
- ordFetch.OrderID);
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- Console.ReadLine();
- }
- }
- else
- {
- Console.WriteLine(
- "There was no parent in the Orders collection.");
- }
- // Display progress.
- Console.WriteLine("Order section finished.");
- Console.ReadLine();
- try
- {
- db.SubmitChanges();
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- Console.ReadLine();
- }
- // Display progress.
- Console.WriteLine("Submit finished.");
- Console.ReadLine();
實現(xiàn)LINQ to SQL刪除行的操作基本內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)掌握實現(xiàn)LINQ to SQL刪除行有所幫助。
當(dāng)前名稱:詳解實現(xiàn)LINQtoSQL刪除行
標(biāo)題來源:http://fisionsoft.com.cn/article/dhosphh.html


咨詢
建站咨詢
