NetCore+Dapper WbpApi架构搭建(二):底层封装
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了NetCore+Dapper WbpApi架构搭建(二):底层封装,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4340字,纯文字阅读大概需要7分钟。
内容图文
![NetCore+Dapper WbpApi架构搭建(二):底层封装](/upload/InfoBanner/zyjiaocheng/1265/45c9434144bf4ee6b5ac22b4853e8b65.jpg)
看下我们上一节搭建的架构,现在开始从事底层的封装
1、首先需要一个实体的接口IEntity
1 namespace Dinner.Dapper 2 { 3 public interface IEntity<TPrimaryKey> 4 { 5 TPrimaryKey Id { get; set; } 6 } 7 }
2、由于所有的数据库实体都是有主键的,所以这里定义一个BaseModel,这里我用的主键是Guid,你们可以换成int
1 using System; 2 3 namespace Dinner.Dapper 4 { 5 public class BaseModel : IEntity<Guid> 6 { 7public Guid Id { get; set; } 8 } 9 }
3、接下来是封装Dapper的SqlServer配置DataBaseConfig(Redis的配置你们可以忽略),不要忘记添加Dapper的Nuget包
1 using StackExchange.Redis; 2 using System.Data; 3 using System.Data.SqlClient; 4 5 namespace Dinner.Dapper 6 { 7 public class DataBaseConfig 8 { 9 #region SqlServer链接配置 1011privatestaticstring DefaultSqlConnectionString = @"Data Source=localhost;Initial Catalog=Dinner;User ID=sa;Password=123456;"; 12privatestaticstring DefaultRedisString = "localhost, abortConnect=false"; 13privatestatic ConnectionMultiplexer redis; 1415publicstatic IDbConnection GetSqlConnection(string sqlConnectionString = null) 16 { 17if (string.IsNullOrWhiteSpace(sqlConnectionString)) 18 { 19 sqlConnectionString = DefaultSqlConnectionString; 20 } 21 IDbConnection conn = new SqlConnection(sqlConnectionString); 22 conn.Open(); 23return conn; 24 } 2526#endregion2728#region Redis链接配置 2930privatestatic ConnectionMultiplexer GetRedis(string redisString = null) 31 { 32if (string.IsNullOrWhiteSpace(redisString)) 33 { 34 redisString = DefaultRedisString; 35 } 36if (redis == null || redis.IsConnected) 37 { 38 redis = ConnectionMultiplexer.Connect(redisString); 39 } 40return redis; 41 } 4243#endregion44 } 45 }
4、然后是仓储基接口IRepositoryBase,添加了基本的增删改查和一个无参的存储过程
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 using System; 2 using System.Collections.Generic; 3 using System.Threading.Tasks; 4 5 namespace Dinner.Dapper 6 { 7 public interface IRepositoryBase<T> 8 { 9 Task Insert(T entity, string insertSql); 1011 Task Update(T entity, string updateSql); 1213 Task Delete(Guid Id, string deleteSql); 1415 Task<List<T>> Select(string selectSql); 1617 Task<T> Detail(Guid Id, string detailSql); 1819///<summary>20/// 无参存储过程 21///</summary>22///<param name="SPName"></param>23///<param name="args"></param>24///<returns></returns>25 Task<List<T>> ExecQuerySP(string SPName); 26 } 27 }
5、仓储基实现类RepositoryBase继承仓储基接口,简单实现增删改查和无参的存储过程
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 using Dapper; 2 using System; 3 using System.Collections.Generic; 4 using System.Data; 5 using System.Linq; 6 using System.Threading.Tasks; 7 8 namespace Dinner.Dapper 9 { 10 public class RepositoryBase<T> : IRepositoryBase<T> 11 { 12publicasync Task Delete(Guid Id, string deleteSql) 13 { 14using (IDbConnection conn = DataBaseConfig.GetSqlConnection()) 15 { 16await conn.ExecuteAsync(deleteSql, new { Id = Id }); 17 } 18 } 1920publicasync Task<T> Detail(Guid Id, string detailSql) 21 { 22using (IDbConnection conn = DataBaseConfig.GetSqlConnection()) 23 { 24//string querySql = @"SELECT Id, UserName, Password, Gender, Birthday, CreateDate, IsDelete FROM dbo.Users WHERE Id=@Id";25returnawait conn.QueryFirstOrDefaultAsync<T>(detailSql, new { Id = Id }); 26 } 27 } 2829///<summary>30/// 无参存储过程 31///</summary>32///<param name="SPName"></param>33///<returns></returns>34publicasync Task<List<T>> ExecQuerySP(string SPName) 35 { 36using (IDbConnection conn = DataBaseConfig.GetSqlConnection()) 37 { 38returnawait Task.Run(() => conn.Query<T>(SPName, null, null, true, null, CommandType.StoredProcedure).ToList()); 39 } 40 } 4142publicasync Task Insert(T entity, string insertSql) 43 { 44using (IDbConnection conn = DataBaseConfig.GetSqlConnection()) 45 { 46await conn.ExecuteAsync(insertSql, entity); 47 } 48 } 4950publicasync Task<List<T>> Select(string selectSql) 51 { 52using (IDbConnection conn = DataBaseConfig.GetSqlConnection()) 53 { 54//string selectSql = @"SELECT Id, UserName, Password, Gender, Birthday, CreateDate, IsDelete FROM dbo.Users";55returnawait Task.Run(()=>conn.Query<T>(selectSql).ToList()); 56 } 57 } 5859publicasync Task Update(T entity, string updateSql) 60 { 61using (IDbConnection conn = DataBaseConfig.GetSqlConnection()) 62 { 63await conn.ExecuteAsync(updateSql, entity); 64 } 65 } 66 } 67 }
上面这些就是底层基本的封装,下一节我们来添加实体和仓储
原文:https://www.cnblogs.com/wangyulong/p/8961061.html
内容总结
以上是互联网集市为您收集整理的NetCore+Dapper WbpApi架构搭建(二):底层封装全部内容,希望文章能够帮你解决NetCore+Dapper WbpApi架构搭建(二):底层封装所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。