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
- 輕量ORM-SqlRepoEx (十五)最佳實踐之資料對映(Map)ORMSQL
- 行列轉換sqlSQL
- sql隱式轉換SQL
- sql 日期格式轉換SQL
- SQL 列行轉換SQL
- sql server 行列轉換SQLServer
- sql int 轉換varcharSQL
- 視訊轉換工具
- Date轉換工具類
- sql server行列轉換案例SQLServer
- sql server型別轉換SQLServer型別
- 【SQL 學習】行列轉換SQL
- 【SQL】行列轉換方法示例SQL
- heic格式轉換jpg工具——轉易俠heic轉換器
- 萬能格式轉換工具
- 型別轉換工具類型別
- 工具方法:時間轉換
- php 的字元編碼轉換工具 (轉)PHP字元
- hex轉浮點數線上轉換工具
- Cisdem PDFMaster for MacPDF批次轉換工具ASTMac
- LocalDateTime工具類(常用轉換)LDA
- DRM音訊清除轉換工具音訊
- pdf轉換word線上工具
- XPM轉換與檢視工具
- 自寫Json轉換工具JSON
- Oracle SQL_ID轉換成SQL_HASH_VALUEOracleSQL
- java工具類之編碼轉換工具類Java
- 如何把圖片轉換成文字?轉換工具用哪個?
- 將網頁轉換為Markdown的免費線上轉換工具網頁
- 如何將 Dapper 換成 SqlSugar ORMAPPSqlSugarORM
- 【SQL】Oracle查詢轉換之 OR用法SQLOracle
- sql 實現表的行列轉換SQL
- Oracle--SQL行列轉換實戰OracleSQL