上一节讲了类库添加一些底层的基本封装,下面来添加实体和仓储

1、Entities文件夹添加一个实体类Users,继承BaseModel,即拥有BaseModel的主键

 using System;

 namespace Dinner.Dapper.Entities
{
public class Users : BaseModel
{
/// <summary>
/// 用户名
/// </summary>
public string UserName { get; set; } /// <summary>
/// 密码
/// </summary>
public string Password { get; set; } /// <summary>
/// 性别(0女,1男)
/// </summary>
public int Gender { get; set; } /// <summary>
/// 出生年月日
/// </summary>
public DateTime Birthday { get; set; } /// <summary>
/// 创建日期
/// </summary>
public DateTime CreateDate { get; set; } /// <summary>
/// 是否删除(0正常,1删除)
/// </summary>
public int IsDelete { get; set; }
}
}

2、IRepository中添加一个IUsersRepository仓储接口,注意仓储接口的写法规范 I+实体名+Repository,对应的仓储业写法贵方 实体名+Repository,这么写不仅是日常规范更是为后面的依赖注入做铺垫

继承自IRepositoryBase<Users> 这个泛型接口,如果你还要定义其他操作,应该自定义接口的新操作方法,然后在实现类中实现自定义的方法

 using Dinner.Dapper.Entities;
using System;
using System.Collections.Generic;
using System.Threading.Tasks; namespace Dinner.Dapper.IRepository
{
public interface IUserRepository : IRepositoryBase<Users>
{
#region 扩展的dapper操作 //加一个带参数的存储过程
string ExecExecQueryParamSP(string spName, string name, int Id); Task<List<Users>> GetUsers(); Task PostUser(Users entity); Task PutUser(Users entity); Task DeleteUser(Guid Id); Task<Users> GetUserDetail(Guid Id); #endregion
}
}

3、Repository中添加一个UserRepository接口实现类继承自RepositoryBase<Users>, IUserRepository

 using Dapper;
using Dinner.Dapper.Entities;
using Dinner.Dapper.IRepository;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks; namespace Dinner.Dapper.Repository
{
public class UserRepository : RepositoryBase<Users>, IUserRepository
{
public async Task DeleteUser(Guid Id)
{
string deleteSql = "DELETE FROM [dbo].[Users] WHERE Id=@Id";
await Delete(Id, deleteSql);
} public string ExecExecQueryParamSP(string spName, string name, int Id)
{
using (IDbConnection conn = DataBaseConfig.GetSqlConnection())
{
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@UserName", name, DbType.String, ParameterDirection.Output, );
parameters.Add("@Id", Id, DbType.String, ParameterDirection.Input);
conn.Execute(spName, parameters, null, null, CommandType.StoredProcedure);
string strUserName = parameters.Get<string>("@UserName");
return strUserName;
}
} public async Task<Users> GetUserDetail(Guid Id)
{
string detailSql = @"SELECT Id, UserName, Password, Gender, Birthday, CreateDate, IsDelete FROM [dbo].[Users] WHERE Id=@Id";
return await Detail(Id, detailSql);
} public async Task<List<Users>> GetUsers()
{
string selectSql = @"SELECT Id, UserName, Password, Gender, Birthday, CreateDate, IsDelete FROM [dbo].[Users]";
return await Select(selectSql);
} public async Task PostUser(Users entity)
{
string insertSql = @"INSERT INTO [dbo].[Users](Id, UserName, Password, Gender, Birthday, CreateDate, IsDelete) VALUES(@Id, @UserName, @Password, @Gender, @Birthday, @CreateDate, @IsDelete)";
await Insert(entity, insertSql);
} public async Task PutUser(Users entity)
{
string updateSql = "UPDATE [dbo].[Users] SET UserName=@UserName, Password=@Password, Gender=@Gender, Birthday=@Birthday, CreateDate=@CreateDate, IsDelete=@IsDelete WHERE Id=@Id";
await Update(entity, updateSql);
}
}
}

Dapper就是写纯Sql语句的,这很考验Sql功底,不像EF那样,写几个Linq就解决了,不过视图,函数,存储过程都是通用的,Dapper可以,EF也可以

这个Dapper的数据库和表需要你自己创建,不比EF可以自动生成

上面建的实体,仓储接口和仓储实现都是为了演示而已,你们若想添加其他实体,仓储就自定义添加,不过一定要遵循命名规范。

下一节我们转到Web Api层,来实现仓储的依赖注入

源码地址: https://github.com/wangyulong0505/Dinner

NetCore+Dapper WebApi架构搭建(三):添加实体和仓储的更多相关文章

  1. NetCore+Dapper WebApi架构搭建(四):仓储的依赖注入

    上一节我们讲到实体,仓储接口和仓储接口的实现需要遵循约定的命名规范,不仅是规范,而且为了依赖注入,现在我们实现仓储的依赖注入 在NetCore WebApi项目中新添加一个文件夹(Unit),当然你也 ...

  2. NetCore+Dapper WebApi架构搭建(二):底层封装

    看下我们上一节搭建的架构,现在开始从事底层的封装 1.首先需要一个实体的接口IEntity namespace Dinner.Dapper { public interface IEntity< ...

  3. NetCore+Dapper WebApi架构搭建(五):Swagger构建WebApi界面

    上一节讲解了仓储的依赖注入,想必现在都可以通过构造函数依赖注入直接调用 但是WebApi只是提供一个接口调用,为了方便我们的操作,我们得给他加上一个图形化界面工具,使用Swagger WebApi项目 ...

  4. NetCore+Dapper WebApi架构搭建(六):添加JWT认证

    WebApi必须保证安全,现在来添加JWT认证 1.打开appsettings.json添加JWT认证的配置信息 2.在项目根目录下新建一个Models文件夹,添加一个JwtSettings.cs的实 ...

  5. NetCore+Dapper WebApi架构搭建(一):基本框架

    初衷是想用dapper搭建一个高性能的架构,因为dapper操作数据库的效率很高 1.VS创建一个NetCore WebApi的框架,然后解决方案添加一个NetStandard的类库 整个解决方案如图 ...

  6. springmvc项目搭建三-添加前端框架

    这几年前端框架发展可以说非常迅猛了...实际项目中也用到了几个,easyui相对来讲,算是我第一个接触的前端框架了,用的时候感觉很方便,省了很多代码量,一个好的前端框架可以为你省去很多精力在前端布局上 ...

  7. dotnet core webapi +vue 搭建前后端完全分离web架构

    架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可 ...

  8. dotnet core webapi +vue 搭建前后端完全分离web架构(一)

    架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可 ...

  9. 架构师成长之路6.5 DNS服务器搭建(添加记录、负载均衡、DNS视图)

    点击返回架构师成长之路 架构师成长之路6.5 DNS服务器搭建(添加记录.负载均衡.DNS视图)  部署主DNS : 点击 部署从DNS : 点击 1.添加A记录.CNAME记录.MX记录.PTR记录 ...

随机推荐

  1. 悲催的IE6 七宗罪大吐槽(带解决方法)第二部分

    三.position:fixed无效 今天在IE6上遇到一个bug,本来想做一个消息提示框,让他在页面右上角停留一段时间后消失,这段时间内提示框随着页面的下拉一直出现在浏览器可见区的顶部,于是我用到了 ...

  2. 阿里云的OCS缓存机制

    OCS简介 OCS( Open Cache Service)为分布式高速缓存服务,主要实现热点数据的快速响应: OCS支持Key/Value的数据结构,兼容memcachebinary protoco ...

  3. 20155212 2016-2017-2《Java程序设计》课程总结

    每周博客 每周作业链接汇总 预备作业一:专业理解.未来展望.期望的师生关系. 预备作业二:HOMEWORK-2 预备作业三:HOMEWORK-3 第一周作业:学习教材Chapter 1 Java平台概 ...

  4. 截取汉字 mb_sbstr()

    一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $l ...

  5. 阿里云mysql数据库设置让公网访问客户端访问

    第一步 首先使用root登入你的mysql ./mysql -u root -p 你的密码 第二步 备注:也可以添加一个用户名为yuancheng,密码为123456,权限为%(表示任意ip都能连接) ...

  6. [转]caffe中solver.prototxt参数说明

    https://www.cnblogs.com/denny402/p/5074049.html solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是so ...

  7. transparent 透明效果

    background-color:transparent;就是把背景色设置为透明. 实际上background默认的颜色就是透明的属性.所以写和不写都是一样的 span{ width: 0; heig ...

  8. 解决 Windows 环境 Git Bash 无法识别 Composer 命令的问题

    思路 模拟 Linux,复制一个 composer 文件到 Git Bash 的 /usr 的子目录,并赋予执行权限. 解决 首先,请确定你的 composer.phar 文件路径.我的是: /d/w ...

  9. 二十二、springboot之监控管理Actuator

    1.新增spring-boot-starter-actuator的依赖 gradle: compile('org.springframework.boot:spring-boot-actuator') ...

  10. 获取SQL Server的版本信息

    微软 SQL Server 版本号 产品名称 发行日期 主版本号 正式版 SP1 SP2 SP3 SP4 SQL Server 2016 2016.06.01 13.00.1601.5 13.00.1 ...