MVC EF 修改 封装类 通用泛型方法(一)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity.Infrastructure;
using System.Data.Entity; namespace DAL
{
public class EF_Help
{
DbContext db; //数据上下文
/// <summary>
/// 修改 个别 数据
/// </summary>
/// <param name="model">要修改的实体对象</param>
/// <param name="proNames">要修改的 属性 名称</param>
/// <returns></returns>
public int Modify<T>(T model, params string[] proNames) where T : class
{
DbEntityEntry entry = db.Entry<T>(model);
entry.State = EntityState.Unchanged;
foreach (string proName in proNames)
{
entry.Property(proName).IsModified = true;
}
db.Configuration.ValidateOnSaveEnabled = false;
return db.SaveChanges();
} /// <summary>
/// 修改 多数 数据, 个别数据除外,proNames 不写 则是 修改全部
/// </summary>
/// <param name="model">要修改的实体对象</param>
/// <param name="proNames">不需要要修改的 属性 名称</param>
/// <returns></returns>
public int ModifyWithOutproNames<T>(T model, string prymartKey, params string[] proNames) where T : class
{ DbEntityEntry entry = db.Entry<T>(model);
entry.State = EntityState.Unchanged;
var properties = model.GetType().GetProperties();
for (int i = ; i < properties.Length; i++)
{
if (properties[i].PropertyType.Name.Contains("ICollection")
|| properties[i].Name == prymartKey
|| proNames.Contains(properties[i].Name)) continue;// 排除 外面 主键 proNames
entry.Property(properties[i].Name).IsModified = true;
}
db.Configuration.ValidateOnSaveEnabled = false;
return db.SaveChanges();
} public EF_Help(DbContext dbContext)
{
db = dbContext;
}
}
}
调用:
using System;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using KT_Product_Show_Market.Areas.Account.Models;
using Newtonsoft.Json;
using EntityFramework.Extensions;
using System.Collections; namespace KT_Product_Show_Market.Areas.Account.Controllers
{
public class UserController : Controller
{
public UserController()
{
ef_Help = new DAL.EF_Help(db);
}
KT_Product_MarketEntities db = new KT_Product_MarketEntities();
DAL.Custom_Expression CE = new DAL.Custom_Expression();
DAL.EF_Help ef_Help; [HttpPost]
[ActionName("Edit")]
public int Edit_Post(TraderInfo post_model)
{
int Temp = ;
if (string.IsNullOrEmpty(post_model.LoginPassward))
{
Temp = ef_Help.ModifyWithOutproNames<TraderInfo>(post_model, "LoginPassward");
}
else
{
Temp = ef_Help.ModifyWithOutproNames<TraderInfo>(post_model);
}
return Temp;
}
}
}

前台 不显示 实际密码,点击 修改密码 ,显示 文本框,然后就可以设置新密码了。
后台如果 有接收 密码,则执行 ef_Help.ModifyWithOutproNames<TraderInfo>(post_model, "LoginPassward"); 除了LoginPassward 以外的列 都会修改。
如果没有 接收到密码 就 执行 ef_Help.ModifyWithOutproNames<TraderInfo>(post_model); 修改所有列
MVC EF 修改 封装类 通用泛型方法(一)的更多相关文章
- MVC EF 修改 封装类 通用泛型方法(二)
修改 这个 方法 如下. 排除 null 值. /// <summary> /// 修改 多数 数据, 个别数据除外, proNames 不写 则是 修改全部 /// </summa ...
- MVC+EF+PagedList+调用通用存储封装+多表联合信息展示分页+存储过程分页
主要的技术点不在这里一一阐述,相关存储也是引用别人的,主要技术点就是通过最优性能方式处理需求,PagedList.包需要在线安装就可以 直接上干货 1.存储代码之第一种: 参数相对多点 /**//* ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- MVC+EF 理解和实现仓储模式和工作单元模式
MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generi ...
- 新年奉献MVC+EF(CodeFirst)+Easyui医药MIS系统
本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新做了一下,业务逻辑简化了许多,旨在加深对mvc,ef(codefirst),easyui,AutoMap ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架 ...
- 新年奉献MVC+EF(CODEFIRST)+EASYUI医药MIS系统(转)
出处:http://www.cnblogs.com/chenlinzhi/p/4332628.html 本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新 ...
随机推荐
- 更改Calendar背景图(使用系统映像选择器)
最近提出的申请,主接口是一个历,网上有很多第三方的日历控件,有使用ImageView实现,有使用GridView实现,它的优点是控制的灵活性. 而我选择使用本机CalendarView,关于这个控件, ...
- apache本地多域配置(wampserver本地多域配置)
当我们在当地发展.通常在浏览器中输入 http://localhost/项目目录名 测试Web文件,你有没有想过在本地浏览器中,输入自己设定的名字进入项目目录,名相关的问题. 比方我想配置一个主域名w ...
- php学习之路:WSDL详细解释(两)
3.定义服务使用的逻辑消息 当服务的操作被调用时.服务被定义为消息交换.在wsdl文档中,这些消息被定义message元素. 这些消息由称之为part元素的部分组成. 一个服务的操作,通过指定逻辑消息 ...
- 人迹罕至的android要完全退出程序的一种方法
最近的一个项目,无意中发现了一个方法,使android要完全退出程序的一种方法,遥想当年,以便找到让的有效途径android遇险完全退出程序,我不由得有些感慨. 在这里,不敢独享.和大家分享一下,还启 ...
- Big ball of Mud
Big ball of Mud 第一种死法:Big ball of Mud 架构里最常用的反面案例是 big ball of mud.很大程度上可以说打格子,把复杂的系统拆解成小格子是架构师最重要的工 ...
- [Network]Transport Layer
1 Principles behind Transport Layer Services 1.1 Multiplexing/Demultiplexing Multiplexing at sender ...
- NOI第一天感想&小结
嘛...中午总算是到了深圳了--在虹桥机场和飞机上和市队大神们一起讨论各种各样奇(sang)葩(bing)的算(ren)法(lei)还是非常开心的,在此再各种膜拜一下尽管没来比赛的FFT大神@陈中瑞 ...
- Docker contanier comunication with route
2台宿主机,hslave1 192.168.1.153, hslave2 192.168.1.154 修改网段 docker0默认网段是172.17.0.0/16,修改154机器的docker0的网段 ...
- j2se--Socket沟通
第一次接触Socket课程设计大二,我在做一个图书馆管理系统.源代码是从互联网上下载,代码天天磨,隐约中记得有Socket这么一个单词. 第二次是去年代表学校參加"河北省电子信息职业技能大赛 ...
- Rust这个新的语言
Rust这个新的语言 Rust初步(七):格式化 摘要: 在Rust中,如果要进行屏幕输出,或者写入到文件中,需要对数据进行格式化.这一篇总结一下它所支持的几种格式化方式. 这篇文章参考了以下官方文档 ...