zoukankan      html  css  js  c++  java
  • 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 = 0; 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 = 0;
                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);  修改所有列

  • 相关阅读:
    Entity Framework 数据并发访问错误原因分析与系统架构优化
    项目中如何使用EF
    Entity Framework版本历史概览
    Entity Framework 6 预热、启动优化
    jQuery EasyUI Datagrid性能优化专题(转)
    jQuery EasyUI Datagrid VirtualScrollView视图简单分析
    用JS判断IE版本的代码
    【转】编写高质量代码改善C#程序的157个建议——建议56:使用继承ISerializable接口更灵活地控制序列化过程
    【转】编写高质量代码改善C#程序的157个建议——建议55:利用定制特性减少可序列化的字段
    【转】编写高质量代码改善C#程序的157个建议——建议54:为无用字段标注不可序列化
  • 原文地址:https://www.cnblogs.com/bingguang/p/4451189.html
Copyright © 2011-2022 走看看