Entity Framework 6 实体某些字段根据模型状态进行自动更新内容
2024-09-07 04:18:48
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)里面去获取实体状态,根据实体状态进行更新对应数据。但是,每次触发实体都会触发该扩展方法。所以没选择。
最新文章
- Devils never rest
- Python学习之day2
- C++实现反射机制
- Webbench网站压力测试
- Java跨平台原理
- [转]学习 WCF (6)--学习调用WCF服务的各种方法
- Html表单的正则校验--将不符合指定正则表达式的字符串自动替换为空
- Robot Framework简介
- lua在MacOS系统上的安装方法
- HUNNU--湖师大--11409--Skill
- mac 搭建node 开发环境记录
- 百度地图API-控件
- Andrew Ng机器学习第一章——初识机器学习
- python语法_json_pickle
- 我遇到的Spring的@Value注解失效问题
- TCP中往返时间的估计与超时
- LodopJS文档式模版的加载和赋值
- Spark参数设置的方式
- 初探FFT(快速傅里叶变换)
- Eureka的原理
热门文章
- PHP ftp_nb_fput() 函数
- P5468 [NOI2019]回家路线 斜率优化 dp
- bzoj 2780 [Spoj]8093 Sevenk Love Oimaster
- mysql8.0以上版本修改密码问题记录
- 动态生成HTML元素-模拟在线考试功能
- 【AHOI2009】同类分布 题解(数位DP)
- kubernetes ingress 重定向地址错误
- 微信小程序--家庭记账小账本(三)
- C#LeetCode刷题之#590-N叉树的后序遍历(N-ary Tree Postorder Traversal)
- JavaScript 中 Blob对象的初步认识