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 ...
随机推荐
- Something wrong with EnCase index search in Unallocated area
hi, My EnCase version is v7 and I found a terrible issue about index search in Unallocated area. Wit ...
- 判断手机,pc方式登录
<script type="text/javascript"> function browserDetect() { var ...
- 前端构建工具grunt
简单配置grunt 配置gulp还是grunt都是在node的环境下安装的,所以在这之前保证你的node环境已经安装好了! -------------------------------------- ...
- linux下的循环命令写法
直切正题 方法一:利用while do循环,举例,while true;do ls;sleep 1;done 解释,该命令为每秒执行ls查询命令,sleep 1 为每秒循环,其他命令可直接替换 ls ...
- DOS下更改编码方式
使用CHCP命令,CHCP是Change Code Page的缩写. 936 简体中文GBK 437 美国英语 65001 UTF编码 如:chcp 65001则将dos窗口中的字符编码改为UTF编码 ...
- Dll学习三_Dll 相互间以及主程序间的数据共享——测试未通过,应该用内存映射
测试环境:XP,DELPHI XE 验证通过结构:主程序+一个Dll窗体 共享方式原理:通过主程序与各Dll定义相同的参数结构体,由主程序实例化该结构体,对于各Dll间的共享,通过传主程序实例化的结构 ...
- 利用FMX控件的MakeScreenshot过程实现WAIT效果
原理: 1.新建一个waitform,添加控件: 背景图片BACKPIC:Timage控件: 再叠加一个WAIT图标(TAniIndicato控件). 2.在要实现wait效果的form上添加一个控件 ...
- 批量kill进程
ps -e | grep java |awk '{print $1}'|xargs kill -9
- Python学习教程(learning Python)--3.1 Python的if分支语句
本节研究一下if分支语句. if分支语句是Python下逻辑条件控制语句,用于条件执行某些语句的控制操作,当if后的条件conditon满足时,if其下的语句块被执行,但当if的控制条件condito ...
- spring error
<aop:config> <aop:pointcut id="allMethod" expression="execution(* a.j.shop.s ...