ORM-SqlRepoEx 是 .Net平臺下相容.NET Standard 2.0,一個實現以Lambda表達式轉轉換標準SQL語句,使用強類型操作數據的輕量級ORM工具,在減少魔法字串同時,通過靈活的Lambda表達式組合,實現業務數據查詢的多樣性。 ...
Dapper就另一個輕量ORM,Dapper及其擴展解決了數據訪問端的大部門問題,提供瞭如數據事務管理、緩存等支持。SqlRepoEx的重點解決了Lambda轉換成SQL語句,使SQL使用強類型編寫,減少字串錯誤的,實現編譯時檢查。
SqlRepoEx同時也實現了數據的映射和訪問,因而Dapper並不是SqlRepoEx所必需的,但Dapper中有些如數據事務管理、緩存等功能還是很不錯的。使用Dapper需拼接SQL字串,而SqlRepoEx可以生成SQL字串,這種結合,還是很相匹配的。
可以通過兩種方式實現SqlRepoEx 與 Dapper 互動。
一、直接用SqlRepoEx 生成Sql語句,然後將此Sql作參給 Dapper就可以了,這種做法可以在利用SqlRepoEx 強大的lambda解析Sql的功能,同時也可完全使用Dapper的功能,如果項目原來使用過Dapper,也不會對原有代碼形成任何影響。
二、使用 SqlRepoEx.Adapter.Dapper 庫,可不關心 如何使用Dapper, SqlRepoEx.Adapter.Dapper 實現了兩個SqlRepoEx的功能類,DapperStatementExecutor,DapperEntityMapper,註冊這兩個類,然後,就實現了使用Dapper來讀寫數據。
string ConnectionString = "datasource=127.0.0.1;username=test;password=test;database=sqlrepotest;charset=gb2312;SslMode = none;";
var connectionProvider = new MySQLP.ConnectionStringConnectionProvider(ConnectionString);
MySqlRepoFactory.UseConnectionProvider(connectionProvider);
MySqlRepoFactory.UseStatementExecutor(new DapperStatementExecutor(connectionProvider));
MySqlRepoFactory.UseDataReaderEntityMapper(new DapperEntityMapper());
var repository11 = MySqlRepoFactory.Create<ToDo>();
var results11 = repository11.Query().Select(e => e.Id, e => e.Task, e => e.CreatedDate).Top(6);
foreach (var item in results11.Go())
{Console.WriteLine($"{item.Id}\t {item.Task}\t {item.CreatedDate}\t {item.Remark}");}
本例源碼見:
https://gitee.com/azthinker/SqlRepoEx2.0Demo/tree/master/Demos/GettingStartedDapper
或
https://github.com/AzThinker/SqlRepoEx2.0Demo/tree/master/Demos/GettingStartedDapper