Dapper封装实现仓储Repository

什么是仓储? 

仓储模式作为领域驱动设计(Domain-Driven Design,DDD)的一部分,在系统设计中的使用非常广泛。它主要用于解除业务逻辑层与数据访问层之间的耦合,使业务逻辑层在存储、访问数据库时无须关心数据的来源及存储方式,例如使用哪种类型的数据库,也无须关心对数据的操作,如数据库连接和命令等。所有这些直接对数据的操作均封装在具体的仓储实现中。

 前言:

本篇博客是主要介绍我封装个案例,如果想要学习对Dapper基本操作的话,请看其他博客!

    gitee源码地址: DapperRepository: Dapper封装仓储Repository

    封装的这个demo十分简化,方便入门,没有类库,直接用文件夹分类了。

    结构结构如下:

一、配置数据库连接和Redis

 二、封装仓储层

 IRepositoryBase<T>定义了仓储的一些基本的增删查改的操作。<T>就是通过泛型传递参数,忘记回去补

<T>  T是要传过来的领域模型(实体类)

 RepositoryBase<T>  仓储实现 IRepositoryBase<T>定义的方法。

 

IUserRepository  这个接口顾名思义就是将要操作的领域模型(实体类)userinfo传递给IRepositoryBase<T>,并基础这个接口,让UserRepository能使用仓储的方法,IUserRepository  这里可以写一些复杂的扩展方法。

 UserRepository 基础了RepositoryBase<userinfo>,和实现IuserRepository接口里面的扩展方法,这里一定要继承RepositoryBase<userinfo>方法,如果不继承的话,RepositoryBase<T>

里面实现的仓储方法就没有一样了,在 UserRepository 还要重新实现。

  •       然后就可以直接在Service里面使用仓储了。
  •       这里注意要将仓储的接口在依赖注入,要不然会报错。
  •             builder.Services.AddTransient<IUserRepository, UserRepository>();
  • 然后就可以使用仓储里面的方法了。 

 

 总结:我这里案例是最基本的实现,方便初学者入门仓储,如果又不对的地方欢迎评论区交流。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在C#中引用jQuery和jqGrid的库文件,然后在页面中添加一个jqGrid的表格。接着,你需要使用Dapper来查询数据库并将数据填充到jqGrid表格中。 以下是一个简单的示例: 1.在页面中添加一个jqGrid表格: ```html <table id="myGrid"></table> ``` 2.在C#代码中,使用Dapper查询数据并将结果填充到jqGrid表格中: ```csharp using System.Data.SqlClient; using Dapper; public class MyController : Controller { private string connectionString = "Data Source=MyServer;Initial Catalog=MyDatabase;User ID=MyUser;Password=MyPassword"; public ActionResult Index() { return View(); } public JsonResult GetData(string searchField, string searchString, string searchOper) { using (var connection = new SqlConnection(connectionString)) { var query = "SELECT * FROM MyTable WHERE " + searchField + " " + searchOper + " @searchString"; var data = connection.Query(query, new { searchString = searchString }); return Json(data, JsonRequestBehavior.AllowGet); } } } ``` 3.在页面中使用jQuery来初始化jqGrid表格,并添加表头条件搜索: ```javascript $(function () { $("#myGrid").jqGrid({ url: "/MyController/GetData", datatype: "json", mtype: "GET", colNames: ["ID", "Name", "Age"], colModel: [ { name: "ID", index: "ID", width: 50 }, { name: "Name", index: "Name", width: 100 }, { name: "Age", index: "Age", width: 50 } ], rowNum: 10, rowList: [10, 20, 30], pager: "#myGridPager", sortname: "ID", sortorder: "asc", viewrecords: true, height: "auto", caption: "My Grid", postData: { searchField: "", searchString: "", searchOper: "eq" }, onSearch: function () { var postData = $("#myGrid").jqGrid("getGridParam", "postData"); postData.searchField = $("#gs_myGrid").val(); postData.searchString = $("#myGrid").jqGrid("getGridParam", "searchString"); postData.searchOper = $("#myGrid").jqGrid("getGridParam", "searchOper"); } }); $("#myGrid").jqGrid("navGrid", "#myGridPager", { edit: false, add: false, del: false }); $("#myGrid").jqGrid("filterToolbar", { searchOnEnter: false }); }); ``` 在这个示例中,我们使用了jqGrid的filterToolbar来添加表头条件搜索,使用了onSearch事件来获取搜索条件并将其添加到postData中,然后在C#代码中使用searchField、searchString和searchOper参数来构造SQL查询语句。 注意:这只是一个简单的示例,实际的实现可能需要更多的逻辑来处理不同的搜索条件和数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值