輕量ORM-SqlRepoEx (四)INSERT、UPDATE、DELETE 語句

来源:https://www.cnblogs.com/athinker/archive/2018/09/29/9721564.html
-Advertisement-
Play Games

.Net平臺下相容.NET Standard 2.0,一個實現以Lambda表達式轉轉換標準SQL語句,使用強類型操作數據的輕量級ORM工具,在減少魔法字串同時,通過靈活的Lambda表達式組合,實現業務數據查詢的多樣性。 ...


*本文中所用類聲明見上一篇博文《輕量ORM-SqlRepoEx (三)Select語句》中Customers類

一、增加記錄

1、工廠一個實例倉儲

  var repository = RepoFactory.Create<Customers>();

2、使用實例增加

Customers customers = new Customers { CustomerID = "YOUR1", CompanyName = "你的公司名1", Phone = "13900000000" };

repository.Insert().For(customers).Go();

當前增加的SQL語句:

INSERT[dbo].[Customers]([CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax])

VALUES('YOUR1', '你的公司名1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '13900000000', NULL);

3、指定列值增加

    repository.Insert().With(m => m.CustomerID, "YOUR1")

                .With(m => m.CompanyName, "你的公司名1")

                .With(m => m.Phone, "13900000001").Go();

當前增加的SQL語句:

        INSERT[dbo].[Customers]

        ([CustomerID], [CompanyName], [Phone])

       VALUES('YOUR1', '你的公司名1', '13900000001');

4、註意事項:

(1)、如果有自增加欄位,需要在對應屬性增加[IdentityFiled] 特性

如: [IdentityFiled]

     public string CustomerID { get; set; }

(2)則生成時有 IdentityFiled 特性是的SQL語句

INSERT [dbo].[Customers]([CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax])

VALUES('你的公司名', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1390000000', NULL);

SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]

FROM [dbo].[Customers]

WHERE [CustomerID] = SCOPE_IDENTITY();

(3)指定列值增加時有 IdentityFiled 特性是的SQL語句

INSERT [dbo].[Customers]([CustomerID], [CompanyName], [Phone])

VALUES('YOUR1', '你的公司名1', '13900000001');

SELECT [CustomerID], [CompanyName], [Phone]

FROM [dbo].[Customers]

WHERE [CustomerID] = SCOPE_IDENTITY();

關於相關特性會在後續博文中介紹

二、更新記錄

1、工廠一個實例倉儲 

  var repository = RepoFactory.Create<Customers>();

2、使用實例更新

Customers customers = new Customers { CustomerID = "YOURC", CompanyName = "你的公司名", Phone = "1390000000" };

repository.Update().For(customers).Go();

生成的SQL語句

UPDATE [dbo].[Customers]

SET [CustomerID] = 'YOURC', [CompanyName] = '你的公司名', [ContactName] = NULL, [ContactTitle] = NULL, [Address] = NULL, [City] = NULL, [Region] = NULL, [PostalCode] = NULL, [Country] = NULL, [Phone] = '1390000000', [Fax] = NULL WHERE  [CustomerID] = 'YOURC',  [CompanyName] = '你的公司名';

3、指定列值更新

repository.Update()

                .Set(m => m.CompanyName, "你的公司名100")

                .Set(m => m.Phone, "13900000023").Where(m => m.CustomerID == "YOUR1").Go())

生成的SQL語句

UPDATE [dbo].[Customers]

SET [CompanyName] = '你的公司名100', [Phone] = '13900000023'

WHERE ([dbo].[Customers].[CustomerID] = 'YOUR1');

三、刪除記錄

1、工廠一個實例倉儲

  var repository = RepoFactory.Create<Customers>();

2、使用實例刪除

 Customers customers = new Customers { CustomerID = "YOURC", CompanyName = "你的公司名", Phone = "1390000000" };

repository.Delete().For(customers).Go();

生成的SQL語句

DELETE [dbo].[Customers] WHERE  [CustomerID] = 'YOURC',  [CompanyName] = '你的公司名';

3、指定條件刪除

repository.Delete().Where(m => m.CustomerID == "YOUR1").Go();

生成的SQL語句

DELETE [dbo].[Customers]

WHERE ([dbo].[Customers].[CustomerID] = 'YOUR1');


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • public class BigDecimalOperation { private BigDecimalOperation(){ } public static BigDecimal add(double v1,double v2){ BigDecimal b1 = new BigDecimal(... ...
  • 操作給定的二叉樹,將其變換為源二叉樹的鏡像。 二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \ 5 7 9 11 鏡像二叉樹 8 / \ 10 6 / \ / ... ...
  • 數組的智能指針 使用 數組的智能指針的限制: 1,unique_ptr的數組智能指針,沒有 和 操作,但支持下標操作[] 2,shared_ptr的數組智能指針,有 和 操作,但不支持下標操作[],只能通過get()去訪問數組的元素。 3,shared_ptr的數組智能指針,必須要自定義delete ...
  • 1、lambda 函數比較輕便,即用即仍,很適合需要完成一項功能,但是此功能只在此一處使用,連名字都很隨意的情況下;2、匿名函數,一般用來給 filter, map 這樣的函數式編程服務;3、作為回調函數,傳遞給某些應用,比如消息處理 ...
  • 簡單的介紹一下吧,斯特靈數其實有很多好玩的性質和擴展的。 定義 設$S(n, m)$表示把$n$個 不同的球 放到$m$個相同的盒子里,且不允許盒子為空的方案數 稱$S$為第二類斯特靈數 計算方法 遞推: 考慮第$n$個球放到了哪裡 第一種情況是自己占一個盒子,方案為$S(n 1, m 1)$ 第二 ...
  • 現在是北京時間2018/9/29 21:25:05 我在加班,寫一個記錄,開啟我的新生活! ...
  • 按照的是中文的visual studio,用起來很不方便,因為程式員的都是英文版,平時交流時也是英文的名字 轉換語言時發現只有中文和跟隨windows系統的設置 官方給的文檔看的不是很清楚 查閱資料後總結下步驟: 1、進入到設置--選項--區域設置,發現沒有英文語言 2、進入工具--獲取工具和功能 ...
  • Steeltoe里的分散式追蹤功能與 "Spring Cloud Sleuth" 一樣,支持在日誌中記錄追蹤數據,或者上傳到遠端的服務,比如Zipkin。 Logging 在Steeltoe中使用日誌時需要引入其特有的日誌包 。 之後還需在應用程式啟動時加入日誌提供器。 接下來,引入追蹤包 。 然後 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...