我正在使用LINQ to SQL,并且在更新表中的时间戳列时需要一些帮助。
Car candidate = Context.Cars.Where(c => c.CarID == car.Id).SingleOrDefault();
candidate.CarName = carToUpdate.CarName;
candidate.CarDescription = carToUpdate.CarDescription;
candidate.IsActive = carToUpdate.IsActive;
candidate.IsCab = carToUpdate.IsCab;
candidate.StockTypeId = carToUpdate.StockTypeId;
Context.SubmitChanges();
如果car实体的属性没有变化,则时间戳不会更改。 (看起来LINQ to SQL非常智能,不能向数据库发送更新)。
无论如何都要将时间戳从LINQ更改为SQL ??
请帮忙。
感谢。
答案 0 :(得分:0)
SQL表上的触发器不是一个选项吗?
编辑:我认为此主题会回答您的问题force LinqToSql to submit
答案 1 :(得分:0)
如何添加LastUpdatedDate列并将其设置为DateTime.Now
,这应该确保它始终会进行更新,然后更改时间戳列。
答案 2 :(得分:0)
我认为答案是没有。
如果实体的属性在您修改它们之后是相同的,就像将实体从数据库中拉出一样,它实际上并没有改变。
当行实际上未更新时,强制生成新时间戳的目的是什么?
答案 3 :(得分:0)
我正在阅读Object States and Change-Tracking (LINQ to SQL),并说明:
您可以通过观察来检测更新 变更通知。 通过提供通知 属性中的PropertyChanging事件 setter方法。当LINQ to SQL被通知时 它对物体的第一次改变 创建对象的副本和 认为对象是候选对象 生成Update语句。
对于未实现的对象 INOTifyPropertyChanging,LINQ to SQL 维护值的副本 物品在它们第一时就有了 物化。你打电话的时候 SubmitChanges,LINQ to SQL比较 当前和原始值 决定对象是否已经存在 改变。
您是否可以创建一个部分类,该部分类添加一个调用PropertyChanging
的属性来更新未映射的属性,因此只存在于代码中?