我目前正试图找到一种更好的方法来自动捕获执行插入或更新时所做的更改。我们需要跟踪记录更改的最后日期时间以及执行更新/插入的用户的userid。
在linq-to-sql中有没有一种优雅的方法可以做到这一点?目前,我们已经为所有需要调用的(部分)类添加了Save方法,但这会造成问题,因为并非所有开发人员都记得使用Save方法,并且仍在使用上下文进行数据访问操作。
此外,如果可以的话,我们希望将此逻辑排除在数据库之外。
与其在分部类上创建保存方法,不如实现OnValidate方法并在那里设置属性。
public partial class MyClass
{
partial void OnValidate(System.Data.Linq.ChangeAction action)
{
if (action == System.Data.Linq.ChangeAction.Insert)
{
LastUpdated = DateTime.Now;
ChangedBy = "Me!";
}
}
}
当提交数据上下文时,会自动为您调用此方法。