EF 5.0 帮助类

加入命名空间:

using System;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;

接口:

public interface IEFRepository<TEntity> where TEntity : class{bool AddEntity(TEntity entity);bool UpdateEntity(TEntity entity);bool UpdateEntity(IEnumerable<TEntity> entities);bool DeleteEntity(int ID);bool DeleteEntity(TEntity entity);bool DeleteEntity(Expression<Func<TEntity, bool>> predicate);bool DeleteEntity(IEnumerable<TEntity> entities);IList<TEntity> LoadEntities(Func<TEntity, bool> whereLambda);IList<TEntity> LoadEntities(int pageIndex = 1, int pageSize = 30, Func<TEntity, bool> whereLambda = null);TEntity FindByID(int ID);}

具体类:

//EF5.0的写法 public class EFRepository<TEntity> : IEFRepository<TEntity> where TEntity : class{#region 单利模式public static EFRepository<TEntity> Instance = new EFRepository<TEntity>();public EFRepository( ){Create();}#endregion/// <summary>/// 获取 当前使用的数据访问上下文对象/// </summary>public DbContext Context{get{return EFDbContextHelper.Context;}}public bool AddEntity(TEntity entity){EntityState state = Context.Entry(entity).State;if (state == EntityState.Detached){Context.Entry(entity).State = EntityState.Added;}Context.SaveChanges();return true;}public bool UpdateEntity(TEntity entity){Context.Set<TEntity>().Attach(entity);Context.Entry<TEntity>(entity).State = EntityState.Modified;return Context.SaveChanges() > 0;}public bool UpdateEntity(IEnumerable<TEntity> entities){try{Context.Configuration.AutoDetectChangesEnabled = false;foreach (TEntity entity in entities){UpdateEntity(entity);}return true;}finally{Context.Configuration.AutoDetectChangesEnabled = true;}}public bool DeleteEntity(int ID){TEntity entity = FindByID(ID);return DeleteEntity(entity);}public bool DeleteEntity(TEntity entity){Context.Set<TEntity>().Attach(entity);Context.Entry<TEntity>(entity).State = EntityState.Deleted;return Context.SaveChanges() > 0;}public bool DeleteEntity(System.Linq.Expressions.Expression<Func<TEntity, bool>> predicate){List<TEntity> entities = Set().Where(predicate).ToList();return Context.SaveChanges() > 0;}public bool DeleteEntity(IEnumerable<TEntity> entities){try{Context.Configuration.AutoDetectChangesEnabled = false;foreach (TEntity entity in entities){DeleteEntity(entity);}return true;}finally{Context.Configuration.AutoDetectChangesEnabled = true;}}public IList<TEntity> LoadEntities(Func<TEntity, bool> whereLambda){if (whereLambda != null)return Context.Set<TEntity>().Where<TEntity>(whereLambda).AsQueryable().ToList();elsereturn Context.Set<TEntity>().AsQueryable().ToList();}public IList<TEntity> LoadEntities(int pageIndex = 1, int pageSize = 30, Func<TEntity, bool> whereLambda = null){int skinCount = (pageIndex - 1) * pageSize;if (whereLambda != null)return Set().Where<TEntity>(whereLambda).Skip(skinCount).Take(pageSize).ToList();elsereturn Set().Skip(skinCount).Take(pageSize).ToList();}public DbSet<TEntity> Set( ){return Context.Set<TEntity>();}public TEntity FindByID(int ID){return Set().Find(ID);}private TEntity Create( ){return Context.Set<TEntity>().Create();}}

使用:

准备实体类

/// <summary> /// 实体类楼层管理 。(属性说明自动提取数据库字段的描述信息) /// </summary>
    [Serializable]public class Floor { public int ID { get; set; } [Category("楼层名称")]public string f_Name { get; set; } [Category("备注")]public string f_Remark { get; set; } }

使用EF帮助类调用

/// <summary> /// 数据上下文 Db3983Context /// </summary> public class Db3983Context : EFDbContext { /// <summary> /// 构造函数 /// </summary> public Db3983Context() : base("3983") { } /// <summary> /// 楼层管理 /// </summary> public DbSet<Floor> Floor { get; set; }
}

/// <summary>/// 应用程序的主入口点。/// </summary>
        [STAThread]static void Main( ){EFDbContextHelper.Context = new Db3983Context();Floor floor = new Floor();floor.f_Name = "罗敏贵";floor.f_Remark = "我这个人看上去很靠谱,长得也很高有一米八五,也很帅气,千万不要迷恋哥,哥只是传说。";EFRepository<Floor>.Instance.AddEntity(floor);}

扩展:

其他ORM只要现实上面的接口就可以了,然后在配置文件制定使用哪个ORM就可以做到扩展了。

http://www.cnblogs.com/lori/archive/2012/10/19/2731801.html

EF 5.0 帮助类相关推荐

  1. EF 5.0 帮助类 增删改查

    原文地址:http://www.cnblogs.com/luomingui/p/3362813.html EF 5.0 帮助类 加入命名空间: using System; using System.D ...

  2. EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录

    前言 本文主要是讲解EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录 注意拦截器只有EF Core3.0+ 支持,2.1请考虑上下文工厂的形式实现. 说点题外话.. 一晃又大半年没更新技 ...

  3. Boost:测试使用大小为0的类array <>特化

    Boost:测试使用大小为0的类array <>特化 实现功能 C++实现代码 实现功能 测试使用大小为0的类array <>特化 C++实现代码 #include <s ...

  4. 【编译系统】什么是PL/0和类Pcode虚拟机

    [编译系统]什么是PL/0和类Pcode虚拟机 什么是PL/0 什么是类P-Code虚拟机 什么是PL/0 PL/0是个虚拟的编译系统,也是一些虚拟的编译语言,计算机并看不懂,那么怎么运行呢,找一个看 ...

  5. 【.NetCore学习】ASP.NET Core EF Core2.0 DB First现有数据库自动生成实体Context

    主要参考微软官方文档 https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db Microsoft .NE ...

  6. 一步步学习EF Core(3.EF Core2.0路线图)

    前言 这几天一直在研究EF Core的官方文档,暂时没有发现什么比较新的和EF6.x差距比较大的东西.不过我倒是发现了EF Core的路线图更新了,下面我们就来看看 今天我们来看看最新的EF Core ...

  7. Ext2.0布局类初探

    Ext2.0正式版虽然还没出来,但是官网上的例程还是令人兴奋不已.内存泄漏的问题应该是解决了,布局类更新了,增加了新的东西,grid的功能更加强大,tabs也增加了循环按钮,还增加了类似delphi ...

  8. .net 2.0 BackgroundWorker类详细用法

    在WinForm中经常遇到一些费时的操作界面,比如统计某个磁盘分区的文件夹或者文件数目,如果分区很大或者文件过多的话,处理不好就会造成"假死"的情况,或者报"线程间操作无 ...

  9. java基础.0——Object类

    从这篇文章起就正式开始java学习之旅了.java中,万物皆对象,所以第一篇先学习java的Object类,循序渐进. 一.getClass() 1 public final native Class ...

最新文章

  1. 用Leangoo敏捷开发工具如何管理用户故事?
  2. 设计模式之享元模式学习笔记
  3. GET 和 POST 的区别(重要,面试常问)
  4. hive 0.11 mysql_Hive的升级(0.8.0到0.11.0)
  5. cas 注销不关闭浏览器异常_上海公司经营异常注销麻烦吗
  6. altium 去掉部分铺铜_干货|HFSS器件导入Altium进行PCB制作教程!!!
  7. 一文了解Linux 网络 I/O 模型
  8. java 数组的get set_java.lang.reflect.Array.setBoolean()方法
  9. 二进制和八进制表示法
  10. 设计师社区网站-交流、学习、展示
  11. [hdu1242]优先队列
  12. python如何与其他软件交互_如何与Python中的另一个程序交互?
  13. 【NER】命名实体识别:详解BiLSTM_CRF_Pytorch_Tutorial代码
  14. matlab r2014a 序列号,Matlab R2014a 免费版
  15. PSD缩略图的设置方法
  16. KMS和MAK的区别
  17. 中职学校计算机教学参考文献,中职计算机教学论文
  18. Airflow PythonOperator、BashOperator以及Xcom使用
  19. Python京东抢购
  20. 涛思数据创始人陶建辉荣获“2020中国开源杰出贡献人物”奖

热门文章

  1. 安全问题推动企业采用托管和混合IT服务
  2. Linux防火墙之介绍
  3. javascript对象的property和prototype是这样一种关系
  4. 秦晖教授讲座:亲历当代史——我的中国研究情怀
  5. 大数据在各行业中的应用表现
  6. 常见的大数据安全5个问题和解决策略
  7. 贝叶斯方法学习笔记(二)
  8. 锚杆拉拔试验弹性模量计算_公路工程试验检测项目有哪些?
  9. 计算机专业指南考试题6,计算机专业指南考试题.doc
  10. oracle 手动执行作业,ORACLE 作业操作