public class EntityBaseRepository<T> : IEntityBaseRepository<T>

where T : class, IEntityBase, new()

{

private SchedulerContext _context;

#region Properties

public EntityBaseRepository(SchedulerContext context)

{

_context = context;

}

#endregion

public virtual IEnumerable<T> GetAll()

{

return _context.Set<T>().AsEnumerable();

}

public virtual int Count()

{

return _context.Set<T>().Count();

}

public virtual IEnumerable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties)

{

IQueryable<T> query = _context.Set<T>();

foreach (var includeProperty in includeProperties)

{

query = query.Include(includeProperty);

}

return query.AsEnumerable();

}

public T GetSingle(int id)

{

return _context.Set<T>().FirstOrDefault(x => x.Id == id);

}

public T GetSingle(Expression<Func<T, bool>> predicate)

{

return _context.Set<T>().FirstOrDefault(predicate);

}

public T GetSingle(Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includeProperties)

{

IQueryable<T> query = _context.Set<T>();

foreach (var includeProperty in includeProperties)

{

query = query.Include(includeProperty);

}

return query.Where(predicate).FirstOrDefault();

}

public virtual IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate)

{

return _context.Set<T>().Where(predicate);

}

public virtual void Add(T entity)

{

EntityEntry dbEntityEntry = _context.Entry<T>(entity);

_context.Set<T>().Add(entity);

}

public virtual void Update(T entity)

{

EntityEntry dbEntityEntry = _context.Entry<T>(entity);

dbEntityEntry.State = EntityState.Modified;

}

public virtual void Delete(T entity)

{

EntityEntry dbEntityEntry = _context.Entry<T>(entity);

dbEntityEntry.State = EntityState.Deleted;

}

public virtual void DeleteWhere(Expression<Func<T, bool>> predicate)

{

IEnumerable<T> entities = _context.Set<T>().Where(predicate);

foreach(var entity in entities)

{

_context.Entry<T>(entity).State = EntityState.Deleted;

}

}

public virtual void Commit()

{

_context.SaveChanges();

}

}

EntityFramework Core 封装的更多相关文章

  1. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  2. EntityFramework Core高并发深挖详解,一纸长文,你准备好了吗?

    前言 之前有关EF并发探讨过几次,但是呢,博主感觉还是有问题,为什么会觉得有问题,其实就是理解不够透彻罢了,于是在项目中都是用的存储过程或者SQL语句来实现,利用放假时间好好补补EF Core并发的问 ...

  3. EntityFramework Core查询问题集锦(一)

    前言 和大家脱离了一段时间,有时候总想着时间挤挤总是会有的,但是并非人愿,后面会借助周末的时间来打理博客,如有问题可以在周末私信我或者加我QQ皆可,欢迎和大家一起探讨,本节我们来讨论EF Core中的 ...

  4. EntityFramework Core 2.0 Explicitly Compiled Query(显式编译查询)

    前言 EntityFramework Core 2.0引入了显式编译查询,在查询数据时预先编译好LINQ查询便于在请求数据时能够立即响应.显式编译查询提供了高可用场景,通过使用显式编译的查询可以提高查 ...

  5. EntityFramework Core 1.1+ Backing Fields(返回字段)

    前言 通过我发表的博文可知最近一段时间会将持续讲解EntityFramework Core特性,在此之前我提到过Backing Fields,回头翻了翻感觉写的还不够好,于是乎再来讲解一番,也是自己再 ...

  6. EntityFramework Core 运行dotnet ef命令迁移背后本质是什么?(EF Core迁移原理)

    前言 终于踏出第一步探索EF Core原理和本质,过程虽然比较漫长且枯燥乏味还得反复论证,其中滋味自知,EF Core的强大想必不用我再过多废话,有时候我们是否思考过背后到底做了些什么,到底怎么实现的 ...

  7. 你必须知道的EntityFramework 6.x和EntityFramework Core变更追踪状态

    前言 只要有时间就会时不时去看最新EF Core的进展情况,同时也会去看下基础,把握好基础至关重要,本节我们对比看看如标题EF 6.x和EF Core的不同,希望对正在学习EF Core的同行能有所帮 ...

  8. EntityFramework Core问题处理集锦(一)

    前言 和大家脱离了一段时间,有时候总想着时间挤挤总是会有的,但是并非人愿,后面会借助周末的时间来打理博客,如有问题可以在周末私信我或者加我QQ皆可,欢迎和大家一起探讨,本节我们来讨论EF Core中的 ...

  9. EntityFramework Core并发深挖详解,一纸长文,你准备好看完了吗?

    前言 之前有关EF并发探讨过几次,但是呢,博主感觉还是有问题,为什么会觉得有问题,其实就是理解不够透彻罢了,于是在项目中都是用的存储过程或者SQL语句来实现,利用放假时间好好补补EF Core并发的问 ...

随机推荐

  1. Java File类总结和FileUtils类

    Java File类总结和FileUtils类 文件存在和类型判断 创建出File类的对象并不代表该路径下有此文件或目录. 用public boolean exists()可以判断文件是否存在. Fi ...

  2. iOS runtime的理解和应用

    项目中经常会有一些的功能模块用到runtime,最近也在学习它.对于要不要阅读runtime的源码,我觉得仅仅是处理正常的开发,那真的没有必要,只要把常用的一些函数看下和原理理解下就可以了. 但是如果 ...

  3. 【代码笔记】iOS-后台运行,可以选择在前台或后台或前后台

    一,工程图. 二,代码. AppDelegate.h AppDelegate.m RootViewController.h #import <UIKit/UIKit.h> @interfa ...

  4. UI控件(复习一下)

    如何修改控件状态• 可见,确实需要经常修改控件状态• 那如何去修改控件的状态呢?方法很简单➢ 每一个UI控件都是一个对象➢ 修改UI控件的状态,其实就是修改控件对象的属性➢ 比如修改UILabel显示 ...

  5. XML解析方案

    在iOS中,解析XML的手段有很多 苹果原生 NSXMLParser:SAX方式解析,使用简单 第三方框架 libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析 GDa ...

  6. GitHub Top 100 的项目(iOS)

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. Android 版本的在此: https://gith ...

  7. 安全攻防之SQL注入(通过sqlmap搞定所有问题)

    第一步: sqlmap基于Python,所以首先下载: http://yunpan.cn/QiCBLZtGGTa7U  访问密码 c26e 第二步: 安装Python,将sqlmap解压到Python ...

  8. 关于tableview内cell自定义的注册以及创建

    自定义cell的方法主要有两种,storyboard以及xib(假设新建的是cellTableViewCell类) 比较倾向于xib方式使用xib在xib文件内将自定义的cell绘制好后导入到调用文件 ...

  9. vs2015密钥 企业版 专业版 (vs.net)

    专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2企业版:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

  10. Play Framework 第一个应用

    熟悉的Hello World 新创建一个工程,了解下重要文件的结构 .\app controllers\models\views 目前比较流行的MVC架构 .\conf application.con ...