Lambda 轉換 SQL ORM 工具 SqlRepoEx
主要解決:
1、解決拼接語句,使用where以外方法時,缺少Where子句時的錯誤;
2、解決多條件拼接Where;
3、增加操作時,不再受限於例項必需有Id的自增自段
Example
IRepository<ToDo> repository = repositoryFactory.Create<ToDo>();
var results = repository.Query()
.Select(e => e.Id, e => e.Task, e => e.CreatedDate);
results = results.Where(e => e.IsCompleted == false);
results = results.Where(e => e.Id == 3);
未改之前
SELECT [dbo].[ToDo].[Id]
, [dbo].[ToDo].[Task]
, [dbo].[ToDo].[CreatedDate]
FROM [dbo].[ToDo]
WHERE ([dbo].[ToDo].[IsCompleted] = 0)
WHERE ([dbo].[ToDo].[Id] = 3);
更改後
SELECT [dbo].[ToDo].[Id]
, [dbo].[ToDo].[Task]
, [dbo].[ToDo].[CreatedDate]
FROM [dbo].[ToDo]
WHERE ([dbo].[ToDo].[IsCompleted] = 0)
And ([dbo].[ToDo].[Id] = 3);
指定非自增欄位
var repository = this.repositoryFactory.Create<DoitTest>();
DoitTest doitTest = new DoitTest();
doitTest.TestRmk = "測試";
doitTest.TestBool = true;
doitTest.TestId = 123;
Console.WriteLine(repository.Insert().UsingIdField(d => d.TestId, false).For(doitTest).Sql());
生成的SQL
INSERT [dbo].[DoitTest]([TestId], [TestRmk], [TestBool])
VALUES(123, '測試', 1);
指定非自增欄位
var repository = this.repositoryFactory.Create<DoitTest>();
DoitTest doitTest = new DoitTest();
doitTest.TestRmk = "測試";
doitTest.TestBool = true;
doitTest.TestId = 123;
Console.WriteLine(repository.Insert().UsingIdField(d => d.TestId).For(doitTest).Sql());
生成的SQL
INSERT [dbo].[DoitTest]([TestRmk], [TestBool])
VALUES('測試', 1);
SELECT *
FROM [dbo].[DoitTest]
WHERE [TestId] = SCOPE_IDENTITY();
原專案中的例子:
public class GettingStarted
{
private IRepositoryFactory repositoryFactory;
public GettingStarted(IRepositoryFactory repositoryFactory)
{
this.repositoryFactory = repositoryFactory;
}
public void DoIt()
{
var repository = this.repositoryFactory.Create<ToDo>();
var results = repository.Query()
.Select(e => e.Id, e => e.Task, e => e.CreatedDate)
.Where(e => e.IsCompleted == false)
.Go();
}
}
Generates the following SQL statement and maps the results back to the list of ToDo objects.
SELECT [dbo].[ToDo].[Id], [dbo].[ToDo].[Task], [dbo].[ToDo].[CreatedDate]
FROM [dbo].[ToDo]
WHERE [dbo].[ToDo].[IsCompleted] = 0;
2018-9-25增加分頁操作
var repository = RepoFactory.Create<ToDo>();
var results = repository.Query()
.Select(e => e.Id, e => e.Task, e => e.CreatedDate)
.OrderBy(e => e.Id)
.Page(10, 3)
.Go();
2018-9-25增加儲存OUTPUT引數返回
本文來自雲棲社群合作伙伴“開源中國”
本文作者:h4cd
相關文章
- 輕量ORM-SqlRepoEx (十一)擴充套件ORMSQL套件
- 輕量ORM-SqlRepoEx (九)與Dapper共舞ORMSQLAPP
- 輕量ORM-SqlRepoEx (五) 儲存過程操作ORMSQL儲存過程
- 輕量ORM-SqlRepoEx (四)INSERT、UPDATE、DELETE 語句ORMSQLdelete
- 輕量ORM-SqlRepoEx (十六)最佳實踐之Dapper(2)ORMSQLAPP
- sql隱式轉換SQL
- 輕量ORM-SqlRepoEx (十五)最佳實踐之資料對映(Map)ORMSQL
- 視訊轉換工具
- heic格式轉換jpg工具——轉易俠heic轉換器
- Oracle SQL_ID轉換成SQL_HASH_VALUEOracleSQL
- 【SQL】Oracle查詢轉換之 OR用法SQLOracle
- 工具方法:時間轉換
- 型別轉換工具類型別
- android kotlin dp 轉換工具AndroidKotlin
- 自寫Json轉換工具JSON
- LocalDateTime工具類(常用轉換)LDA
- flink將bathch dataset 轉換為sql操作BATSQL
- transqlate:將任何SQL轉換為PostgreSQL方言SQL
- Spark SQL中的RDD與DataFrame轉換SparkSQL
- PythonGUI工具 圖片大小轉換PythonNGUI
- csv轉換工具:Advanced CSV Converter
- Cisdem PDFMaster for MacPDF批次轉換工具ASTMac
- DRM音訊清除轉換工具音訊
- Macpdf轉換工具-PDF Converter macMac
- ABBYY FineReader PDF——PDF轉換工具
- 如何把圖片轉換成文字?轉換工具用哪個?
- hex轉浮點數線上轉換工具
- java工具類之編碼轉換工具類Java
- 資料庫轉換工具,不同資料庫之前任意轉換資料庫
- 將網頁轉換為Markdown的免費線上轉換工具網頁
- sql server 資料型別轉換函式SQLServer資料型別函式
- 日期與字串的互相轉換SQL語句字串SQL
- Oracle_SQL部分_時間轉換(案例一)OracleSQL
- 將 SQL轉換成 Laravel Query Builder 程式碼SQLLaravelUI
- 【SQL】Oracle查詢轉換之謂詞推送SQLOracle
- T-SQL——將字串轉換為多列SQL字串
- 最方便的ICON、PNG轉換工具
- 進位制轉換的工具類