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. Android自定义ScrollView分段加载大文本数据到TextView

    以下内容为原创,转载时请注明链接地址:http://www.cnblogs.com/tiantianbyconan/p/3311658.html 这是我现在碰到的一个问题,如果需要在TextView中 ...

  2. 【代码笔记】iOS-平面化的饼图

    一,效果图. 二,工程图. 三,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additi ...

  3. 【代码笔记】iOS-背景色随机显示

    一,效果图. 二,工程图. 三,代码. RootViewController.h RootViewController.m - (void)viewDidLoad { [super viewDidLo ...

  4. 【Android】不依赖焦点和选中的TextView跑马灯

    前言 继承TextView,并仿照源码修改而来,主要是取消了焦点和选中了判断,也不依赖文本的宽度. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民 ...

  5. svn黄色叹号解决

    客户端是TortoiseSVN的话,在该文件或文件夹上点右键,选择TortoiseSVN——revert

  6. JMS发布/订阅消息传送例子

    前言 基于上篇文章"基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送"很容易就可以编写一个发布/订阅消息传送例子,相关环境准备与该篇文章基本类似,主要 ...

  7. Java中的内部接口

    什么是内部接口 内部接口也称为嵌套接口,即在一个接口内部定义另一个接口.举个例子,Entry接口定义在Map接口里面,如下代码: public interface Map { interface En ...

  8. oracle的性能优化

    (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table) ...

  9. 使用JUnit4测试Spring

    测试DAO import static org.junit.Assert.*; import org.junit.Before; import org.junit.Ignore; import org ...

  10. .NET框架设计(高级框架架构模式)—钝化程序、逻辑冻结、冻结程序的延续、瞬间转移

    阅读目录: 1.开篇介绍 2.程序书签(代码书签机制) 2.1ProgramBookmark 实现(使用委托来锚点代码书签) 2.2ProgramBookmarkManager书签管理器(对象化书签集 ...