博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF 5.0 帮助类
阅读量:6590 次
发布时间:2019-06-24

本文共 4569 字,大约阅读时间需要 15 分钟。

EF 5.0 帮助类

加入命名空间:

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

接口:

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

具体类:

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

使用:

准备实体类

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

使用EF帮助类调用

///      /// 数据上下文 Db3983Context     ///      public class Db3983Context : EFDbContext     {         ///          /// 构造函数         ///          public Db3983Context()             : base("3983")         {         }         ///          /// 楼层管理         ///          public DbSet
Floor { get; set; } }
///         /// 应用程序的主入口点。        ///         [STAThread]        static void Main( )        {            EFDbContextHelper.Context = new Db3983Context();            Floor floor = new Floor();            floor.f_Name = "罗敏贵";            floor.f_Remark = "我这个人看上去很靠谱,长得也很高有一米八五,也很帅气,千万不要迷恋哥,哥只是传说。";            EFRepository
.Instance.AddEntity(floor); }

扩展:

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

http://www.cnblogs.com/lori/archive/2012/10/19/2731801.html
你可能感兴趣的文章
C# 线程手册 第三章 使用线程 Monitor.TryEnter()
查看>>
分享11个超棒的移动应用(mobile apps)开发解决方案
查看>>
C/C++获取文件大小
查看>>
深入理解Java内存模型(五)——锁
查看>>
Chalubo僵尸网络来袭 IOT设备或将受到DDoS攻击
查看>>
如何实现百万TPS?详解JMQ4的存储设计
查看>>
这么说吧,NIO很简单,其实就是个牛逼IO
查看>>
七、【应用的主要框架】
查看>>
使用Python快速获取公众号文章定制电子书(二)
查看>>
iOS下JS与OC互相调用(七)--Cordova 基础
查看>>
Three.js 关于立方体贴图产生边缘锯齿问题
查看>>
Nacos v0.7.0:对接CMDB,实现基于标签的服务发现能力
查看>>
【开发问题记录①】关于滑动CollectionView时ContentSize变化的问题
查看>>
java中GC的基本概念
查看>>
building xxx gradle project info的解决办法
查看>>
【Leetcode】98. 验证二叉搜索树
查看>>
Vagrant (一) - 基本知识
查看>>
在 CentOS 7 上搭建 Jenkins + Maven + Git 持续集成环境
查看>>
数据结构与算法 | Leetcode 19. Remove Nth Node From End of List
查看>>
一起来读you don't know javascript(一)
查看>>