实体框架代码优先 - 保存实体时设置属性的最佳方法是啥
Posted
技术标签:
【中文标题】实体框架代码优先 - 保存实体时设置属性的最佳方法是啥【英文标题】:Entity framework code first - What is the best approch to set property when entity is saved实体框架代码优先 - 保存实体时设置属性的最佳方法是什么 【发布时间】:2012-01-31 11:18:32 【问题描述】:我正在使用 Entity Framework 4.1 并首先使用代码。
这是我的课
public class Dummy
public string Name get; set;
public DateTime lastModifiyed get; set;
我想要做的是每次保存 Dummy 对象时,都应将 lastModifyed 属性设置为当前时间。
即使我使用像 requried 这样的属性,此代码仍然有效。
var d = new Dummy();
d.lastModifiyed = DateTime.MinValue
做这种事情的最佳实践是什么。我已经阅读了覆盖从 DbContext 继承的类中的 SaveChanges 并检查例如接口是一个很好的方法。或者我该怎么做?
【问题讨论】:
【参考方案1】:覆盖SaveChanges
方法并在调用base.SaveChanges
之前枚举来自更改跟踪器的更改。即:
foreach (var item in (this as IObjectContextAdapter).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted)
.Where(entry => entry.Entity is ITracksLastModified)
.Select(entry => entry.Entity as ITracksLastModified))
item.LastModified = DateTime.UtcNow;
【讨论】:
以上是关于实体框架代码优先 - 保存实体时设置属性的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章