如果我有以下实体:实体框架/ SQL2008 - 如何自动更新实体的LastModified字段?
public class PocoWithDates
{
public string PocoName { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime LastModified { get; set; }
}
对应于SQL Server 2008中的表具有相同的名称/属性...
我怎么可以自动:
- 将记录的CreatedOn/LastModified字段设置为现在(在执行INSERT时)
- 设置上次更改时间字段中记录现在(做UPDATE时)
,当我说自动,我的意思是我希望能够做到这一点:
poco.Name = "Changing the name";
repository.Save();
不是这:
poco.Name = "Changing the name";
poco.LastModified = DateTime.Now;
repository.Save();
在幕后,“某事”应该会自动更新日期时间字段。那是什么“东西”?
我正在使用实体框架4.0 - 有没有一种方法,EF可以为我自动做到这一点? (在EDMX也许一个特殊的设置?)
从SQL Server端,我可以使用默认值,但将只对工作INSERT的(未更新的)。
同样,我可以使用POCO的构造函数来设置默认值,但这只会在实例化对象时才起作用。
当然我可能使用触发器,但它并不理想。因为我使用实体框架,我可以挂钩到SavingChanges事件和更新这里的日期字段,但问题是我需要变得“知道”POCO的(目前,我的存储库是用泛型实现)。我需要做一些面向对象的诡计(比如让我的POCO实现一个接口,并且调用一个方法)。我没有被逆转,但如果我必须这样做,我宁愿手动设置字段。
我基本上是在寻找一个SQL Server 2008或Entity Framework 4.0解决方案。 (或一个聪明的.NET方式)
任何想法?
编辑
感谢@marc_s他的回答,但我去了一个解决方案这是我的方案更好。
我刚才问一次这个问题,但后来EF6,因为我很喜欢这个问题,所提供的解决方案,但所提供的代码示例不适用于EF6.0,因为它们是目前的。 – Bart 2014-02-20 15:23:33