EntityFramework.Extended扩展用法
EntityFramework.Extended是一个基于EntityFramework框架 IQueryable类型的扩展方法,包括Update、Delete。

它的优点就是 修改删除操作不仅仅有Id一个条件,可以有过个条件;
做修改时不仅可以传入整个实体类型,也可以根据条件只传入需要改变的局部字段内容。
1.Nuget程序包管理 搜索并下载程序集

2.创建一个数据上下文
/ // <summary>
/// 数据上下文
/// </summary>
public class MyDbContext:DbContext
{
#region 构造函数 /// <summary>
/// 初始化一个 使用连接名称为“default”的数据访问上下文类 的新实例
/// </summary>
public MyDbContext()
: base("SqlServer") { } /// <summary>
/// 初始化一个 使用指定数据连接名称或连接串 的数据访问上下文类 的新实例
/// </summary>
public SchoolDbContext(string nameOrConnectionString)
: base(nameOrConnectionString) { } #endregion #region 属性 public DbSet<Member> Member { get; set; } #endregion }
3.调用方法
前提需要引用命名空间
using EntityFramework.Extensions;
请注意他是 IQueryable的扩展方法;
修改局部字段内容:
public bool ModifyName(int memberId,string name,string newName)
{
using (MyDbContext context = new MyDbContext())
{
int state = context.Member.Update(
m => m.Id==memberId && m.Name == newName, //修改条件
m => new Member { Name = newName }); //只修改Name
return state > ? true : false;
}
}
#endregion
删除操作:
public bool Delete(int memberId)
{
using (MyDbContext context = new MyDbContext())
{
int state = context.Member.Delete(
m => m.Id == memberId //修改条件
);
return state > ? true : false;
}
}
如果把它封装到Repository仓储操作类里起来更方便了
/// <summary>
/// 获取 当前实体的查询数据集
/// </summary>
public virtual IQueryable<TEntity> Entities
{
get { return EFContext.Set<TEntity>(); }
}
/// <summary>
/// 删除所有符合特定表达式的数据
/// </summary>
/// <param name="predicate"> 查询条件谓语表达式 </param>
/// <returns> 操作影响的行数 </returns>
public virtual int Delete(Expression<Func<TEntity, bool>> predicate)
{
return Entities.Delete(predicate);
} /// <summary>
/// 修改操作
/// </summary>
/// <param name="fun1">查询条件-谓语表达式</param>
/// <param name="fun2">实体-谓语表达式</param>
/// <returns>操作影响的行数</returns>
public virtual int Update(Expression<Func<TEntity, bool>> fun1, Expression<Func<TEntity, TEntity>> fun2)
{
return Entities.Update(fun1, fun2);
}
EntityFramework.Extended扩展用法的更多相关文章
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- EntityFramework.Extended 对EF进行扩展
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- 采用EntityFramework.Extended 对EF进行扩展
今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对Entity Framework进行扩展的类库 ...
- entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended
对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller ...
- EntityFramework 插件之EntityFramework.Extended (批量处理)
接手了一个用EF来做的项目,由于项目中使用的原生处理,导致很多update都是采用先select 后 update的方式来实现,同时无法批量执行逻辑如:根据订单类型统一更新状态等.所以在经过了N多查找 ...
- 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新
今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...
- EntityFramework.Extended
记录 Entity Framework扩展,可以实现批量更新.删除,但需要EntityFramework6.0支持,需要支持低版本的EF,可下载该扩展的低版本. https://www.nuget.o ...
- ef和mysql使用(二)--让mysql支持EntityFramework.Extended实现批量更新和删除
我们都知道Entity Framework 中不能同时更新多条记录,但是一个老外写的扩展库可以实现此功能EntityFramework.Extended,但是如何是mysql数据库要怎么实现呢 首先实 ...
- EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除
原文链接:http://blog.csdn.net/fanbin168/article/details/51485969 批量插入 (17597条数据批量插入耗时1.7秒) using Sys ...
随机推荐
- Ax Lookup Form
Reference: Class\sysLookupTable 1. 用临时表构造Lookup下拉结果,sysLookupTable有一个parmTmpBuffer方法,表明传入展示的结果集是临时表 ...
- .Net性能优化时应该关注的数据
解决性能问题的时候,我往往会让客户添加下面一些计数器进行性能收集. Process object下的所有计数器: Processor object下的所有计数器: System object下的所有计 ...
- c#面试题及答案
1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组3:请简述面向对象的多态的 ...
- Linux:ssh远程执行命令并自动退出
ssh命令格式: [root@localhost ~]# ssh --helpusage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c ...
- javascript之for-in循环(for-in Loops)
for-in循环应该用在非数组对象的遍历上,使用for-in进行循环也被称为“枚举”. 从技术上将,你可以使用for-in循环数组(因为JavaScript中数组也是对象),但这是不推荐的.因为如果数 ...
- SQL笔记-第二章,数据表的创建和管理
数据类型 分5类:整数.数值.字符相关.日期时间以及二进制 1.整数 数据库系统 类型 说明 MYSQL tinyint [unsigned] 一个很小的整数.有符号的范围是-128 到127,无符号 ...
- Nginx 下无法读取session 导致 thinkphp验证码错误
打开php配置文件 php.ini 使用搜索命令 whereis php.ini 一般在:/etc/php.ini 目录下 使用vim命令打开 找到: session.save_path 找到php保 ...
- 使用SE16N_INTERFACE
调用函数直接修改table数据 在PRD上通常没有权限 但是可以激活sap内置的修改模式 SE16N 修改表数据.增加.删除行项目: 1. Execute tcode ...
- vim与shell的切换
方法1: vim->shell: ctrl-z (挂起vim进程,相当于图形界面中的最小化) shell->vim: fg (foreground) 方法2: vim->shel ...
- 如何解除改变phpmyadmin数据库导入文件大小限制?
1.进到自己的系统里面 打开php.ini的配置文件 修改php.ini: file_uploads on 是否允许通过HTTP上传文件的开关.默认为ON即是开 upload_tmp_d ...