1.定义基础实体对象

public class BaseEntity
{
  public int Id { get; set; }
  public DateTime? CreateTime { get; set; }
  public DateTime? UpdateTime { get; set; }
  public BaseEntity()
  {
    CreateTime = DateTime.Now;
  }
}

2.定义业务实体对象

public class DictEntity:BaseEntity
{
/// <summary>
/// 分组名称
/// </summary>
[StringLength()]
public string GroupName { get; set; }
}

3.在DbContext类里重写SaveChanges()方法

public class DBContext : DbContext
{
public DBContext() : base("Name=ElectronicPrescriptionDB")
{
Database.SetInitializer(new DBInitializer());
}
 public DbSet<DictEntity> Dicts { get; set; }
     public override int SaveChanges()
{
var selectedEntityList = ChangeTracker.Entries().Where(x => x.Entity is BaseEntity && x.State == EntityState.Modified);
//可以加入cookie里面的username,比如:操作人,需扩展DateTimeEntity的属性。
//var userName = "MUKESH";
foreach (var entity in selectedEntityList)
{
((BaseEntity)entity.Entity).UpdateTime = DateTime.Now;
}
return base.SaveChanges();
}
}

之所以选择此方法,经过测试后最简便方法。其他还有:

public RepositoryContext() : base("ApiConn")
{
((IObjectContextAdapter)this).ObjectContext.ObjectStateManager.ObjectStateManagerChanged += this.OnSaveChanges;
}

在OnSaveChanges(object obj, CollectionChangeEventArgs args)里面去获取实体状态,根据实体状态进行更新对应数据。但是,每次触发实体都会触发该扩展方法。所以没选择。

Entity Framework 6 实体某些字段根据模型状态进行自动更新内容的更多相关文章

  1. [转]Entity Framework 的实体关系

    通过 Entiy Framework实践系列 文章,理了理 Entity Framework 的实体关系. 为什么要写文章来理清这些关系?“血”的教训啊,刚开始使用 Entity Framework  ...

  2. Entity Framework使用EntityState和Attach来保存数据变化以及更新实体的个别字段

    在使用Entity Framework作为ORM来存取数据的过程中,最常规的操作就是对数据对象的更新.本文将会包含如何Attach Entity到一个数据Context中,以及如何使用EntitySt ...

  3. Entity Framework(实体框架 EF)

    什么是Entity Framework呢(下面简称EF)? EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架.ORM(对象关系映射框架):指的是面向 ...

  4. Entity Framework关联实体的三种加载方法

    推荐文章 EF性能之关联加载 总结很好 一:介绍三种加载方式 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和熊掌 ...

  5. 《Entity Framework 6 Recipes》中文翻译系列 目录篇 -持续更新

    为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...

  6. Entity Framework 6 Recipes 2nd Edition(12-5)译 -> 自动删除相关联实体

    12-5. 自动删除相关联实体 问题 当一个实体被删除时,你想自动删除它相关联的实体 解决方案 假设你有一个表结构由一个course (科目), course 的classes (课程),以及enro ...

  7. Entity Framework管理实体关系(二):管理一对二关系

    在上一篇文章中,简单的介绍了使用Fluent API如何管理一对一的实体关系,在这篇文章中,接着介绍Fluent API如何管理一对多的实体关系. 要在数据库中配置一对多关系,我们可以依赖EF约定,还 ...

  8. Entity Framework管理实体关系(一):管理一对一关系

    我们现在已经知道如何使用Code First来定义简单的领域类,并且如何使用DbContext类来执行数据库操作.现在我们来看下数据库理论中的多样性关系,我们会使用Code First来实现下面的几种 ...

  9. 解决Entity Framework中DateTime类型字段异常

    从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值 具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大.SqlServe ...

随机推荐

  1. 线程_multiprocessing异步

    from multiprocessing import Pool import time import os def test(): print("---进程池中的进程---pid=%d,p ...

  2. PHP xml_get_current_line_number() 函数

    定义和用法 xml_get_current_line_number() 函数获取 XML 解析器的当前行号.高佣联盟 www.cgewang.com 如果成功,该函数则返回当前行号.如果失败,则返回 ...

  3. MOS 预夹断到底是什么

    https://www.cnblogs.com/yeungchie/ MOS管就像一个开关,栅极(Gate)决定源极(Souce)到漏极(Drain)的沟道(Channel)是开还是关.以NMOS为例 ...

  4. luogu P3264 [JLOI2015]管道连接

    LINK:管道连接 一张无向图 有P个关键点 其中有K个集合 各个集合要在图中形成联通块 边有边权 求最小代价. 其实还是生成树问题 某个点要和某个点要在生成树中 类似这个意思. 可以发现 是斯坦纳树 ...

  5. lamp分离部署

    目录 lamp分离部署 1. 安装httpd 2. 安装mysql 3. 安装php 4. 配置apache并部署项目 4.1 启用代理模块 4.2 配置虚拟主机 4.3 部署PbootCMSPHP企 ...

  6. Ubuntu安装海思SDK(转)

    问题 海思SDK安装时,无法运行sdk.unpack 原因 BASH 和 DASH 的问题. Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主 ...

  7. 迭代列表不要For循环,这是Python列表推导式最基本的概念

    如果你还在使用 For 循环迭代列表,那么你需要了解了解列表推导式,看看它的基本概念都是什么. 列表解析式(List comprehension)或者称为列表推导式,是 Python 中非常强大和优雅 ...

  8. 注重代码习惯,Python零基础从这本书籍开始!

    笨办法学 Python是Zed Shaw 编写的一本Python入门书籍.适合对计算机了解不多,没有学过编程,但对编程感兴趣的朋友学习使用.这本书以习题的方式引导读者一步一步学习编 程,从简单的打印一 ...

  9. 卷积神经网络 part2

    [任务一]代码练习 在谷歌 Colab 上完成代码练习,关键步骤截图,并附一些自己的想法和解读.  ● MobileNetV1 网络:简要阅读谷歌2017年的论文<MobileNets: Eff ...

  10. C#LeetCode刷题-几何

    几何篇 # 题名 刷题 通过率 难度 587 安装栅栏   21.5% 困难 892 三维形体的表面积 C#LeetCode刷题之#892-三维形体的表面积(Surface Area of 3D Sh ...