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 修改 封装类 通用泛型方法(一)的更多相关文章

  1. MVC EF 修改 封装类 通用泛型方法(二)

    修改 这个 方法 如下. 排除 null 值. /// <summary> /// 修改 多数 数据, 个别数据除外, proNames 不写 则是 修改全部 /// </summa ...

  2. MVC+EF+PagedList+调用通用存储封装+多表联合信息展示分页+存储过程分页

    主要的技术点不在这里一一阐述,相关存储也是引用别人的,主要技术点就是通过最优性能方式处理需求,PagedList.包需要在线安装就可以 直接上干货 1.存储代码之第一种: 参数相对多点 /**//* ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览  ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(16)-类库架构扩展以及DLL文件生成修改和用户的简单添加 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改 ASP.NET MVC+EF框架+EasyUI实现权限管系列  (开篇)   (1):框架搭建    ...

  6. MVC+EF 理解和实现仓储模式和工作单元模式

    MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generi ...

  7. 新年奉献MVC+EF(CodeFirst)+Easyui医药MIS系统

    本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新做了一下,业务逻辑简化了许多,旨在加深对mvc,ef(codefirst),easyui,AutoMap ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

  9. 新年奉献MVC+EF(CODEFIRST)+EASYUI医药MIS系统(转)

    出处:http://www.cnblogs.com/chenlinzhi/p/4332628.html 本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新 ...

随机推荐

  1. 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim

    报错原因: 使用UltraISO等软件刻录镜像时默认使用FAT32文件系统,该系统不支持大于4G的文件, 而Server 2012 R2的安装文件install.wim为5.12G,固安装失败. 解决 ...

  2. webBrower控件实现winform和webpage交互

    添加WebBrowser控件 private WebBrowser webBrowser1; 引用页面的document对象 HtmlDocument doc = webBrowser1.Docume ...

  3. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  4. Windows编译Nodejs时遇到 File "configure", line 313 SyntaxError: invalid syntax Failed to create vc project files. 时的解决方法

    第一次编译的时候电脑上未安装python,遂下载了python最新版本3.3.3,但是报了下面这个错误. 把python降到2.7.*的版本即可. 我这里测试2.7.6和2.7.3版本可以正常编译.

  5. Kafka (一)

    使用Kafka最新版本0.9 Kafka 配置 1. 安装 首先需要安装Java,推荐安装Java8,不然会出现一些莫名其妙的错误 kafka_2.11-0.9.0.0.tgz tar -xzf ka ...

  6. leetcode 名单 Insertion Sort List

    Insertion Sort List Total Accepted: 24444 Total Submissions: 96639My Submissions Sort a linked list ...

  7. Signed comparison in Verilog

    Signed comparison in Verilog¶ When you write this in Verilog: wire [7:0] a; wire [7:0] b; wire less; ...

  8. cocos2d-x3.2中map的基本操作和使用

    在游戏开发中,我们有时候会用到map,而map的使用方法我简单给大家介绍一下.Map是c++的一个标准容器,她提供了非常好一对一的关系,在一些程序中建立一个map能够起到事半功倍的效果,总结了一些ma ...

  9. REST API出错响应的设计(转)

    REST API应用很多,一方面提供公共API的平台越来越多,比如微博.微信等:一方面移动应用盛行,为Web端.Android端.IOS端.PC端,搭建一个统一的后台,以REST API的形式提供服务 ...

  10. 《Javascript语言精粹》 读书笔记

    1 6种值被当做假:false.null.undefined.空字符串''.数字0.数字NaN,其他所有值都为真,包括"false" 2 typeof有6种值,分别是'number ...