public class BaseRepository<T>:IBaseRepository<T> where T : class
{
protected EfConnection DbContext = ContextFactory.GetCurrentContext(); public bool Insert(T entity)
{
DbContext.Set<T>().Add(entity);
return DbContext.SaveChanges()>;
} public bool InsertBatch(List<T> datas)
{
DbContext.Set<T>().AddRange(datas);
return DbContext.SaveChanges() > ;
} public void Update(T entity)
{
DbContext.Set<T>().Attach(entity);
DbContext.Entry<T>(entity).State = EntityState.Modified;
DbContext.SaveChanges();
} public void Delete(Expression<Func<T, bool>> expression)
{
var reDeleteds = DbContext.Set<T>().Where(expression);
if (!reDeleteds.Any()) return; foreach (var reDeleted in reDeleteds)
{
DbContext.Entry<T>(reDeleted).State = EntityState.Deleted;
} DbContext.SaveChanges();
} public IQueryable<T> GetAll()
{
return DbContext.Set<T>().AsQueryable();
} public T Find(Expression<Func<T, bool>> expression)
{
return DbContext.Set<T>().FirstOrDefault(expression);
}
}

BaseRepository

public interface IBaseRepository<T> where T : class
{
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">数据实体</param>
/// <returns>添加后的数据实体</returns>
bool Insert(T entity); /// <summary>
/// 批量添加
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
bool InsertBatch(List<T> datas); /// <summary>
/// 更新
/// </summary>
/// <param name="entity">数据实体</param>
/// <returns>是否成功</returns>
void Update(T entity); /// <summary>
/// 删除
/// </summary>
/// <param name="expression">删除条件</param>
/// <returns>是否成功</returns>
void Delete(Expression<Func<T, bool>> expression); /// <summary>
/// 获取所有
/// </summary>
/// <returns></returns>
IQueryable<T> GetAll(); /// <summary>
/// 查找数据
/// </summary>
/// <param name="expression">查询条件</param>
/// <returns>实体</returns>
T Find(Expression<Func<T, bool>> expression);
}

IBaseRepository

基础仓储的接口和EF中的实现

在EF的code frist下写稳健的权限管理系统:仓储设计(三)的更多相关文章

  1. 在EF的code frist下写稳健的权限管理系统:数据库模型(二)

    先从数据库开始,因为是用EF的code frist,所以所有的设计都在解决项目中进行. 先是数据模型开始 我已经建立了四个模型,user,role,action,actiongroup user里面有 ...

  2. 在EF的code frist下写稳健的权限管理系统:MVC过滤拦截,权限核心(五)

    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = ...

  3. 在EF的code frist下写稳健的权限管理系统:界面设计(四)

    基本都是采用pure设计(中文官网:http://purecss.org,英文官网:http://purecss.io).pure只是一个简单强大的cssUI库,支持响应式设计,适合自己设计或者给美工 ...

  4. 在EF的code frist下写稳健的权限管理系统:开篇(一)

    环境:EF6.0.0.0+Autofac3.5.0.0+MVC4.0+pure6.0+Jquery IDE:vs2012,数据库:vs2008r2 搭建环境如下: 我给它取名字为cactus:仙人球, ...

  5. 用GO写一个后台权限管理系统

    最近用GO写了一个后台权限管理系统,在WIN10和ubuntu下部署,在win系统下编译ububtu的部署文件要先做如下配置 set GOARCH=amd64 set GOOS=linux go bu ...

  6. ef core code frist

    https://docs.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/new-db?view=aspnetcore-2.1 1.先创建对应的实 ...

  7. 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑

    前言      从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...

  8. 【干货】利用MVC5+EF6搭建博客系统(一)EF Code frist、实现泛型数据仓储以及业务逻辑

    习MVC有一段时间了,决定自己写一套Demo了,写完源码再共享. PS:如果图片模糊,鼠标右击复制图片网址,然后在浏览器中打开即可. 一.框架搭建 二.创建数据库 1.创建一个空的EF code fr ...

  9. 8天掌握EF的Code First开发系列之动手写第一个Code First应用

    返回<8天掌握EF的Code First开发>总目录 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 自我测试 上一篇<8 ...

随机推荐

  1. 向Page对象注册脚本

    在madn上ClientScriptManager 类的示例: <%@ Page Language="C#"%> <!DOCTYPE html PUBLIC &q ...

  2. android 自定义组合控件 顶部导航栏

    在软件开发过程中,经常见到,就是APP 的标题栏样式几乎都是一样的,只是文字不同而已,两边图标不同.为了减少重复代码,提高效率, 方便大家使用,我们把标题栏通过组合的方式定义成一个控件. 例下图: 点 ...

  3. iOS 面试题 总结

    #include <iostream> using namespace std; int main () { char p[]={'a','b','c'}, q[]="abc&q ...

  4. [AFUI]App Framework

    ---------------------------------------------------------------------------------------------------- ...

  5. JavaScript数据结构,队列和栈

    在JavaScript中为数组封装了大量的方法,比如:concat,pop,push,unshift,shift,forEach等,下面我将使用JavaScript提供的这些方法,实现队列和栈的操作. ...

  6. CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录

    最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用.平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载ja ...

  7. mongodb replica set(副本集)设置步骤

    网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...

  8. PHP isset()与empty()的区别

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...

  9. Tomcat Connector三种运行模式

    BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomcat7或以下,在Linux系统中默认使用这种方式. NIO: 利用Java的异步IO处理,可以通过少量的线程处理大量的 ...

  10. javascript之delete操作符

    理解delete 理论 代码段的类型 执行上下文 活动对象 / 变量对象 属性的特性 内置属性与 DontDelete 未声明的赋值 Firebug的困惑 在eval中删除变量 浏览器兼容性 Geck ...