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

本文共 4622 字,大约阅读时间需要 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

转载于:https://www.cnblogs.com/luomingui/p/3362813.html

你可能感兴趣的文章
Hello World
查看>>
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
IntelliJ IDEA
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>
04-【MongoDB入门教程】mongo命令行
查看>>
字符串与整数之间的转换
查看>>
断点传输HTTP和URL协议
查看>>
redis 数据类型详解 以及 redis适用场景场合
查看>>
mysql服务器的主从配置
查看>>
巧用AJAX技术,通过updatePanel控件实现局部刷新
查看>>
20140420技术交流活动总结
查看>>
SaltStack配置salt-api
查看>>
各种情况下block的类型
查看>>
ThinkPHP 3.2.x 集成极光推送指北
查看>>
js作用域链
查看>>
java中如何选择Collection Class--java线程(第3版)
查看>>