//代码调用由业务层调用,调用方式详见源代码的业务层,升级直接替换TT模板即可,无需覆盖系统
using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure;
using System.Data.SqlClient;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks; namespace Apps.IDAL
{
public interface IBaseRepository<T> : IDisposable
{ #region 创建记录(异步与同步方法) bool Create(T model, bool isCommit = true); Task<bool> CreateAsync(T model, bool isCommit = true); bool CreateList<T1>(List<T1> T, bool IsCommit = true) where T1 : class;
Task<bool> CreateListAsync<T1>(List<T1> T, bool IsCommit = true) where T1 : class; #endregion #region 修改记录 (异步和同步方法) bool Edit(T model, bool isCommit = true);
Task<bool> EditAsync(T model, bool isCommit = true); /// <summary>
/// 批量
/// </summary>
/// <param name="whereLambda">表达式</param>
/// <param name="updateLambda">m_Rep.BatchUpdate(a=>a.Age==36,a=>new SysSample() { Age = 37});</param>
/// <returns></returns>
int BatchUpdate(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> updateLambda); Task<int> BatchUpdateAsync(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> updateLambda);
#endregion #region 删除记录 (异步和同步方法) bool Delete(T model, bool isCommit = true);
Task<bool> DeleteAsync(T model, bool isCommit = true);
/// <summary>
/// 按主键删除
/// </summary>
/// <param name="keyValues"></param>
int Delete(params object[] keyValues);
Task<int> DeleteAsync(params object[] keyValues); /// <summary>
/// 批量删除
/// </summary>
/// <param name="whereLambda">删除条件</param>
/// <returns></returns>
int BatchDelete(Expression<Func<T, bool>> whereLambda);
Task<int> BatchDeleteAsync(Expression<Func<T, bool>> whereLambda);
#endregion #region 查询记录(异步和同步方法) T GetById(params object[] keyValues); Task<T> GetByIdAsync(params object[] keyValues); T GetSingleWhere(Expression<Func<T, bool>> whereLambda);
/// <summary>
/// 获得所有数据
/// </summary>
/// <returns></returns>
IQueryable<T> GetList();
/// <summary>
/// 根据表达式获取数据
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
IQueryable<T> GetList(Expression<Func<T, bool>> whereLambda); IQueryable<T> GetList<S>(int pageSize, int pageIndex, out int total
, Expression<Func<T, bool>> whereLambda, bool isAsc, Expression<Func<T, bool>> orderByLambda); #endregion #region 执行数据库语句 (同步和异步方法)
/// <summary>
/// 执行一条SQL语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
int ExecuteSqlCommand(string sql);
int ExecuteSqlCommand(string sql, params SqlParameter[] sp);
Task<int> ExecuteSqlCommandAsync(string sql);
IQueryable<T> SqlQuery(string sql);
IQueryable<T> SqlQuery(string sql, params object[] paras);
#endregion bool IsExist(object id);
int SaveChanges();
}
}

仓储层接口IBaseRepository解析的更多相关文章

  1. OSS.Core基于Dapper封装(表达式解析+Emit)仓储层的构思及实现

    最近趁着不忙,在构思一个搭建一个开源的完整项目,至于原因以及整个项目框架后边文章我再说明.既然要起一个完整的项目,那么数据仓储访问就必不可少,这篇文章我主要介绍这个新项目(OSS.Core)中我对仓储 ...

  2. .netCore+Vue 搭建的简捷开发框架 (2)--仓储层实现和EFCore 的使用

    书接上文,继续搭建我们基于.netCore 的开发框架.首先是我们的项目分层结构. 这个分层结构,是参考张老师的分层结构,但是实际项目中,我没有去实现仓储模型.因为我使用的是EFCore ,最近也一直 ...

  3. ASP.NET MVC系列 框架搭建(二)之仓储层的优化

    大神勿喷,小神默默学. 会了就是不值一提的东西,不会就是绝对的高大上. 最后上传源码.希望能给读者带来一些新的认识及知识. 还没上过头条..各位大神,请点支持一下小弟. 陆续更新.更新到你会为止!! ...

  4. mapper.xml是怎样实现Dao层接口

    上午写了一个简单的 从xml读取信息实例化一个Bean对象.下午就开始想mybatis是怎么通过xml文件来实现dao层接口的,一开始想直接用Class.forName(String name)然后调 ...

  5. FreeSql.Repository 通用仓储层功能

    前言 好多年前,DAL 作为数据库访问层,其实是非常流行的命名方式. 不知道从什么时候开始,仓储层成了新的时尚名词.目前了解到,许多人只要在项目中看见 DAL 就会觉得很 low,但是比较可笑的一点是 ...

  6. EFCore+Mysql仓储层建设(分页、多字段排序、部分字段更新)

    前沿 园子里已有挺多博文介绍了EFCore+Mysql/MSSql如何进行使用,但实际开发不会把EF层放在Web层混合起来,需要多个项目配合结构清晰的进行分层工作,本文根据个人实践经验总结将各个项目进 ...

  7. SSM实战——秒杀系统之Service层接口设计与实现、Spring托管、声明式事务

    一:Service层接口设计 准备工作:新建三个包:service包.exception包.dto包,分别用来存放业务接口.自定义异常类.dto类. 1:定义接口 package org.myseck ...

  8. MyBatis框架的XML数据访问Dao层接口的组合使用

    MyBatis 的前生为Apache的开源项目iBatis.其优势在于灵活,几乎可以替代JDBC,同时提供了编程接口.目前MyBatis的数据访问Dao层不需要实现类,也不需要像JDBC那样拼接Hql ...

  9. 利用WPF建立自己的3d gis软件(非axhost方式)(十三)万能的用户层接口,(强大的WPF)

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十三)万能的用户层接口,(强大的WPF) 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt ...

随机推荐

  1. Flask应用错误处理

    目录 Flask 应用错误处理 错误日志工具 错误处理 注册 处理 日志 排除应用错误 有疑问时,请手动运行 使用调试器 参考 Flask 应用错误处理 应用出错,服务器出错.或早或晚,你会遇到产品出 ...

  2. 成功激活Win8.1专业版方法

    前两天安装了Win8.1,感觉界面效果都很简约,速度很快,很喜欢,但是不是破解版,本想将就着用,等到真正破解工具出来了再激活,但是用了两天发现系统右下角屏幕上有未激活的提示,时常弹出激活设置,看着有点 ...

  3. Linux运维面试题之--网页打开缓慢如何优化

    服务器负载过高或者网页打开缓慢,简单说说你的优化思路 ? 首先我们要发现问题的过程,通过操作系统,数据库,程序设计,硬件角度四个维度找到问题所在 找到瓶颈点的位置 制定好优化方案,形成处理问题的体系 ...

  4. Linux 小知识翻译 - 「TCP/IP」

    上次说了「协议」相关的话题,这次专门说说「TCP/IP」协议. 这里的主题是「TCP/IP」到底是什么?但并不是要说明「TCP/IP」是什么东西,重点是「TCP/IP」究竟有什么意义,在哪里使用「TC ...

  5. 「PKUSC2018」神仙的游戏

    题目链接 比如说上面\(|S|\)为12的字符串,我们欲求出\(f(9)\)的值,那么上面相同颜色的字符必须两两能够匹配.也就是说,同种颜色的字符集里不能同时出现0和1.如果只考虑同种颜色集里相邻的两 ...

  6. Luogu P4707 重返现世

    题目描述 为了打开返回现世的大门,Yopilla 需要制作开启大门的钥匙.Yopilla 所在的迷失大陆有 \(n\) 种原料,只需要集齐任意 \(k\) 种,就可以开始制作. Yopilla 来到了 ...

  7. PHP的curl查看header信息的功能(包括查看返回header和请求header)

    PHP的curl功能十分强大,简单点说,就是一个PHP实现浏览器的基础. 最常用的可能就是抓取远程数据或者向远程POST数据.但是在这个过程中,调试时,可能会有查看header的必要. 如下: ech ...

  8. cmd 监控网络状况

    提示:如果提示curl不是内部命令,请自行百度 windows 安装curl @echo off color 1f title 正在监控 echo 正在监控http://ioscheck.duapp. ...

  9. gas问题out of gas的解决

    1.昨天遇见了还是以前遇见的问题,就是发现有些函数就是不能用web3调用,然后怎么弄都写不到数组上,但是今天终于将它解决了web3的学习:https://github.com/ethereum/wik ...

  10. OPTIMIZER_INDEX_COST_ADJ 与OPTIMIZER_INDEX_CACHING 参数说明

    [部分转载]http://www.xifenfei.com/2012/06/optimizer_index_caching和optimizer_index_cost_adj参数说明.html 1. O ...