.Net平臺下相容.NET Standard 2.0,一個實現以Lambda表達式轉轉換標準SQL語句,使用強類型操作數據的輕量級ORM工具,在減少魔法字串同時,通過靈活的Lambda表達式組合,實現業務數據查詢的多樣性。 ...
一、示例用資料庫為Northwind資料庫,可在百度網盤下載
https://pan.baidu.com/s/1er0Mm48kUfeAsYkSW6DfnA 密碼:r7pm
二、如何初始化SqlRepoEx請參看上一篇博文《輕量ORM-SqlRepoEx (二)初始化SqlRepoEx》
三、生成示例用類
public class Customers { #region 業務屬性定義 public string CustomerID { get; set; } public string CompanyName { get; set; } public string ContactName { get; set; } public string ContactTitle { get; set; } public string Address { get; set; } public string City { get; set; } public string Region { get; set; } public string PostalCode { get; set; } public string Country { get; set; } public string Phone { get; set; } public string Fax { get; set; } #endregion }
四、一個簡單的Select調用
var repository = RepoFactory.Create<Customers>();
var results = repository.Query()
.Select(e => e.CustomerID, e => e.ContactName, e => e.CompanyName)
.OrderBy(e => e.CustomerID)
.Top(20)
.Go();
foreach (var item in results)
{
Console.WriteLine($"{item.CustomerID}\t {item.ContactName}\t\t {item.CompanyName} ");
}
得到如下結果:
ALFKI Maria Anders Alfreds Futterkiste ANATR Ana Trujillo Ana Trujillo Emparedados y helados ANTON Antonio Moreno Antonio Moreno Taquería AROUT Thomas Hardy Around the Horn BERGS Christina Berglund Berglunds snabbk?p BLAUS Hanna Moos Blauer See Delikatessen BLONP Frédérique Citeaux Blondesddsl père et fils BOLID Martín Sommer Bólido Comidas preparadas BONAP Laurence Lebihan Bon app' BOTTM Elizabeth Lincoln Bottom-Dollar Markets BSBEV Victoria Ashworth B's Beverages CACTU Patricio Simpson Cactus Comidas para llevar CENTC Francisco Chang Centro comercial Moctezuma CHOPS Yang Wang Chop-suey Chinese COMMI Pedro Afonso Comércio Mineiro CONSH Elizabeth Brown Consolidated Holdings DRACD Sven Ottlieb Drachenblut Delikatessen DUMON Janine Labrune Du monde entier EASTC Ann Devon Eastern Connection ERNSH Roland Mendel Ernst Handel
如果需要列印當前查詢的SQL語句,而不是運行只需要調用Sql():
var results2 = repository.Query()
.Select(e => e.CustomerID, e => e.ContactName, e => e.CompanyName)
.OrderBy(e => e.CustomerID)
.Top(20)
.Sql();
得到如下結果:
SELECT TOP (20) [dbo].[Customers].[CustomerID]
, [dbo].[Customers].[ContactName]
, [dbo].[Customers].[CompanyName]
FROM [dbo].[Customers]
ORDER BY [dbo].[Customers].[CustomerID] ASC;
四、Select
1、實例一個查詢實例的Repository
2、調用Repository 的Query() 獲取一個查詢類SelectStatement實例,此類實現大多數SQL查詢場景;
3、SelectStatement有兩個重要的方法
(1)、Sql()方法,此方法會返回當前repository.Query()的實際SQL語句;
(2)、Go()方法,此方法可將當前Select返回一個IEnumerable<TEntity>結果,另外,SelectStatement還實現了 ListEntityGo<TLEntity>()方法,返回一個List<TEntity>;
4、repository.Query()可簡單的調用 repository.Query().Go(),這樣會返回完整的實例集;其效果與repository.Query().SelectAll().Go();是一樣的,但SelectAll()可以指定當前查詢別名。、;
5、如果只需要返回數據集的部分欄位數據,可以採用Select(e => e.CustomerID, e => e.ContactName, e => e.CompanyName)的表達示來獲取特定列的數據;