引用自:http://www.lanhusoft.com/Article/246.html

Posted By : 蓝狐
Updated On : 2015-05-19 21:13

我们EF6都知道用SaveChanges可以修改数据库中的一个表中的记录,但是有时候我们只想修改某几列,而有些字段一旦创建好了就不需要修改。比如:表产品表Product有一个字段CreateTime,记录的是创建时间,在修改的时候不用修改。为了解决这个问题,下面我就给出EF6中SaveChanges修改实体跳过某一列不修改的方法,相应代码如下:

  1. if (ModelState.IsValid)
  2. {
  3. product.UpdateTime = DateTime.Now;
  4. db.Entry(product).State = EntityState.Modified;
  5. db.Entry(product).Property("CreateTime").IsModified = false;
  6. db.SaveChanges();
  7. return RedirectToAction("Index");
  8. }

上面关键一行代码是:

  1. db.Entry(product).Property("CreateTime").IsModified = false;
表示告诉EF框架列CreateTime没有被修改,这样EF生成的sql语句update就不会包含列CreateTime。

注意:这行标示列不被修改的行一定要在db.Entry(product).State = EntityState.Modified之后,不然会报下面的错:

 

Member 'IsModified' cannot be called for property 'CreateTime' because the entity of type 'CMS_Product' does not exist in the context. To add an entity to the context call the Add or Attach method of DbSet<CMS_Product>.

 

.net网站&系统开发技术学习交流群:533829726
本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:蓝狐软件工作室 » EF6中SaveChanges修改实体跳过某一列不修改的方法
本文标题:EF6中SaveChanges修改实体跳过某一列不修改的方法
本文地址:http://www.lanhusoft.com/Article/246.html
 
关于蓝狐
 

本科学历,蓝狐软件工作室创始人。2009年开始从事软件开发行业,从事软件开发互朕网7年以上,3年以上项目管理和架构设计经验,具有丰富的电子商务行业的移动和Web应用的架构设计和开发经验。参与过高并发、高可用、分布式系统设计,熟悉SOA架构设计,有敏捷开发经验。熟悉.NET和Java EE相关技术和框架,熟悉Linux、Windows、Nginx、Mysql等服务器的部署和优化。熟悉主流的开发语言,擅长SQL Server、mysql、Oracle等主流数据库,通过了Oracle OCP 11g认证,有丰富的数据库性能优化和设计经验。独立开发了多个人作品:蓝狐seo管理系统、seo关键词按天计费系统、蓝狐软件工作室门户等。曾在多家移动互联网担当核心技术研发和管理工作,同时承担关键技术难点攻关和设计高性能的技术架构。把握平台的技术发展方向,对技术发展及时提出指导性意见。在提高平台的稳定性、性能、质量等方面做出了重要贡献。目前专职于为企业提供优质的信息化建设服务,其中不限于系统、软件定制开发和高端网站建设。

posted on 2018-04-26 11:51  ChinaDeveloper  阅读(347)  评论(0)    收藏  举报