C# 将Linq更新为实体时排除列
我正在尝试存储更新日期并为所有记录创建日期 我为SaveChanges方法添加了覆盖,当我更新一条记录时,CreatedDate将变为null。所以我的问题是,在更新时,我如何保持CreatedDate不变C# 将Linq更新为实体时排除列,c#,linq,C#,Linq,我正在尝试存储更新日期并为所有记录创建日期 我为SaveChanges方法添加了覆盖,当我更新一条记录时,CreatedDate将变为null。所以我的问题是,在更新时,我如何保持CreatedDate不变 public override int SaveChanges() { try { var changeSet = ChangeTracker.Entries(); dynamic obj;
public override int SaveChanges()
{
try
{
var changeSet = ChangeTracker.Entries();
dynamic obj;
if (changeSet != null)
{
foreach (var entry in changeSet.Where(c => c.State == EntityState.Added))
{
obj = entry.Entity;
obj.CreatedDate = DateTime.UtcNow;
}
foreach (var entry in changeSet.Where(c => c.State == EntityState.Modified))
{
obj = entry.Entity;
obj.ModifiedDate = DateTime.UtcNow;
}
}
}
catch (Exception ex)
{
throw;
}
return base.SaveChanges();
}
很简单,更新时不要传递CreateDate
if (changeSet != null)
{
foreach (var entry in changeSet.Where(c => c.State == EntityState.Added))
{
obj = entry.Entity;
}
foreach (var entry in changeSet.Where(c => c.State == EntityState.Modified))
{
obj = entry.Entity;
}
}
一般建议-为什么不使用if-else将这2个循环合并为1?@Bakri没关系,如果有新的日期,则添加验证,然后通过