目錄
- [LINQ2Dapper]最完整Dapper To Linq框架(一)---基礎查詢
- [LINQ2Dapper]最完整Dapper To Linq框架(二)---動態化查詢
- [LINQ2Dapper]最完整Dapper To Linq框架(三)---實體類關系映射
- [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL並行使用
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq實際執行的SQL
- [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表聯合與匿名類型返回
- [LINQ2Dapper]最完整Dapper To Linq框架(七)---倉儲模式
- [LINQ2Dapper]最完整Dapper To Linq框架(八)---導航屬性
3.1.8版本增加新功能倉儲模式
Kogel.Repository 作為擴展,現實了通用倉儲層功能。與其他規范標准一樣,倉儲層也有相應的規范定義
1.安裝
使用倉儲模式需要安裝擴展包Kogel.Repository,可在Nuget上搜索最新版本
或者使用Nuget命令
dotnet add package Kogel.Repository
2.定義
public class TestRepository : BaseRepository<Comment>//Comment為實體類 { public override void OnConfiguring(RepositoryOptionsBuilder builder) { builder .BuildConnection(new MySqlConnection("Server=localhost;Database=Qx_Sport_Common;Uid=root;Pwd=A5101264a;"))//配置連接方式 .BuildProvider(new MySqlProvider());//配置數據庫提供者 } }
用此方法可以根據自身需求配置多數據庫
3.使用方法
1.支持原生Kogel.Dapper.Extension的方法
using (TestRepository testRepository = new TestRepository()) { var querySet = testRepository.QuerySet();//查詢對象 var commandSet = testRepository.CommandSet();//執行對象 }
或者使用事務中的Orm屬性
using (TestRepository testRepository = new TestRepository()) { var comment = testRepository.Orm.QuerySet<Comment>().ToList(); }
此Orm屬性相當於倉儲創建時產生的IDbConnection
還支持基礎的增刪改查
/// <summary> /// 根據主鍵獲取當前實體數據 /// </summary> /// <returns></returns> T FindById(int id); /// <summary> /// 增加 /// </summary> /// <returns></returns> int Insert(T entity); /// <summary> /// 刪除(根據主鍵) /// </summary> /// <returns></returns> int Delete(int id); /// <summary> /// 修改(根據主鍵) /// </summary> /// <returns></returns> int Update(T entity);
2.UnitOfWork
UnitOfWork 可將多個數據庫操作放在一個單元管理執行,最終通用 Commit 執行所有操作,內部采用了數據庫事務;
例如
using (TestRepository testRepository = new TestRepository()) { //開始事務 testRepository.UnitOfWork.BeginTransaction(() => { var comment = testRepository.Orm.QuerySet<Comment>().ToList(); testRepository.Orm.CommandSet<Comment>() .Where(x => x.Id == comment.FirstOrDefault().Id) .Update(comment.FirstOrDefault()); //其他倉儲類代碼塊 new TestRepositoryQuery1().Test(); }); //提交 testRepository.UnitOfWork.Commit(); }
其他倉儲類的代碼塊也會進入此單元管理的事務中,因為他們都將會用指定方(testRepository)開啟的IDbConnection與IDbTransaction並且如果事務
中的代碼塊異常,會第一時間回滾並且拋出異常
如果工作單元事務中存在其他數據庫連接方式(根據連接字符串判斷)的查詢編輯語句,則會使用自身的連接和事務不會用指定方(testRepository)開啟
的IDbConnection與IDbTransaction
框架開源,完整框架源碼可以去Github上下載:
https://github.com/a935368322/Kogel.Dapper.Extension
如有問題也可以加QQ群討論:
技術群 710217654