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. T4 模板的调试方法,方便大家遇到问题自己快速定位和优化

    T4 模板的调试方法,方便大家遇到问题自己快速定位和优化 :1. .ttinclude文件的第一行修改为 <#@ template language="C#" debug=& ...

  2. Mplayer 官方中文手册

    MPlayer 名称总览描述交互式控制用法配置文件配置集通用选项播放器选项(仅适用于MPLAYER)分离器/媒体流选项OSD/字幕选项音频输出选项(仅适用于MPLAYER)音频输出驱动(仅适用于MPL ...

  3. 组合vs继承

    继承,建立子类. 组合(或聚集),在类定义中引用其它类的实例.

  4. H264 Profile

    H.264有四种profile,对应四种H264画质级别.每个profile支持一组特定的编码功能,并支持一类特定的应用,分别是BP.EP.MP.HP: 1. BP-Baseline Profile ...

  5. github添加ssh认证

    总概:在使用git的时候,和目标仓库建立关系有两种方式https,ssh.一般用的是https认证(这样简单方便),但有个缺点,pull,push等操作需要频繁输入用户验证.虽然可以把用户验证账号密码 ...

  6. 在Service Fabric上部署Java应用,体验一把微服务的自动切换

    虽然Service Fabric的Java支持版本还没有正式发布,但是Service Fabric本身的服务管理.部署.升级等功能是非常好用的,那么Java的开发者可以如何利用上Service Fab ...

  7. sql server数据库中 smallint, int ,bigint ,tinyint的区别与长度

    smallint  是一种精确的数值数据类型,其精度在算术运算后不变,采用2个字节编码 有符号的 smallint 值的范围是 -2^15-------2^15 -1,即 -32768 ----327 ...

  8. 把jqmobi 變成jQuery 的插件 從此使用jQuery

    因為項目的要求,需要用到jQuery 的一些插件 ,而我又是用jqmobi的....o(╯□╰)o 看看文檔.....把jqmobi  變成jQuery的插件  問題就解決了 O(∩_∩)O哈哈~ 官 ...

  9. PAT1023. Have Fun with Numbers

    //水题,但是考点不水,可能用的strlen属于string库,但是只能用于字符,不能用数字,因为\0就是0.出现0无法判断,其次二倍时有可能有进位 //第一次在二倍进位上出了问题 #include& ...

  10. 跨域请求之JSONP 二

    续上篇,加两个实用功能 1,增加data属性,请求参数2,增加scope属性,可以让回调函数在指定的上下文中执行 接口如下 1 2 3 4 5 6 Sjax.load(url, {     data  ...