1. 程式人生 > >輕量ORM-SqlRepoEx 重大升級

輕量ORM-SqlRepoEx 重大升級

reat customer res query npr mar none new cto

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

技術分享圖片

一、SqlRepoEx升級為2.0,此次升級主要變更為

1、重新組織代碼結構,以支持SQL方言;

2、增加對MySQL數據訪問支持;

3、增加通過Dapper進行數據訪問支持;

只需幾步,即可實現SqlRepoEx與

(1)、數據庫連接設置

string ConnectionString = "Data Source=(Local);Initial Catalog=Northwind;User ID=test;Password=test";

var connectionProvider = new MsSQLP.ConnectionStringConnectionProvider(ConnectionString);

MsSqlRepoFactory.UseConnectionProvider(connectionProvider);

(2)、註冊Dapper解釋器

MsSqlRepoFactory.UseStatementExecutor(new DapperStatementExecutor(connectionProvider));

MsSqlRepoFactory.UseDataReaderEntityMapper(new DapperEntityMapper());

(3)、標準SqlRepoEx數據訪問

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

var result = repository.Query().Select(e => e.CustomerID, e => e.CompanyName, e => e.Address).Top(10);

(4)、在Lambda表達式轉轉上,支持復雜Lambda語法解析;

SqlRepoEx1.1的where語句只支持單一表達式: Where(c => c.Id == 9),如果使用 Where(c => c.Id == 9 && c.Id == 10 ),則會報錯;

SqlRepoEx2.0可以使用:Where(c => c.Id > 0 && c.Id < 30 && c.Remark.Contains("a"))的更自然的語法;

(5)、增加對Union操作支持

SqlRepoEx1.1不支持Union操作;

在SqlRepoEx2.0中可以

技術分享圖片
 1 var repository = MsSqlRepoFactory.Create<ToDo>();
 2     var results = repository.Query().Select(e => e.Id, e => e.Task);
 3     var results5 = repository.Query().Select(e => e.Id, e => e.Task)
 4           .Where(c => c.Id > 0 && c.Id < 7);
 5     var results6 = repository.Query()
 6            .Select(e => e.Id, e => e.Task)
 7           .Where(c => c.Id > 10 && c.Id < 15);
 8     var results2 = results.Union(new List<UnionSql> {
 9          UnionSql.New(  results5,UnionType.Union ),
10          UnionSql.New(  results6,UnionType.Union )  });
11     foreach (var item in results2)
12     {
13     Console.WriteLine($"{item.Id}\t {item.Task} ");
14     }
View Code

(6)、增強Join語法

var repository = MsSqlRepoFactory.Create<ToDo>();

var results1 = repository.Query()

.InnerJoin<TaskRemark>()

// 增加附加條件,如果主選擇有此屬性,則查詢本句中所設置

.On<TaskRemark>((r, l) => r.Task == l.Task, l => l.Remark);

Console.WriteLine(results1.Sql());

二、可通過Nuget獲得

(一)、MS SQL SqlServer

1、使用 Autofac 時

Install-Package SqlRepoEx.MsSql.Autofac -Version 2.0.1

2、Asp.Net Core

Install-Package SqlRepoEx.MsSql.ServiceCollection -Version 2.0.1

3、手動實例時

Install-Package SqlRepoEx.MsSql.Static -Version 2.0.1

(二)、MySQL

1、使用 Autofac 時

Install-Package SqlRepoEx.MySql.Autofac -Version 2.0.1

2、Asp.Net Core

Install-Package SqlRepoEx.MySql.ServiceCollection -Version 2.0.1

3、手動實例時

Install-Package SqlRepoEx.MySql.Static -Version 2.0.1

(三)、支持Dapper

Install-Package SqlRepoEx.Adapter.Dapper -Version 1.0.1

(四)、通用SQL

Install-Package SqlRepoEx.Normal -Version 2.0.1

(五)、案例源碼

https://github.com/AzThinker/SqlRepoEx2.0Demo

如使用中有任何問題,請告知

1、通過評論;

2、可通過電郵 [email protected]

3、有興趣的請在QQ群中參與討論、聯系作者 QQ群名稱:ATK高效開發 ,QQ群號:747049962

輕量ORM-SqlRepoEx 重大升級