仅当LastUpdateDate与DB记录相同时才更新记录

时间:2014-05-11 05:37:25

标签: entity-framework

我正在做一个项目,只有当该DB记录中的最后更新日期未被其他人修改时才需要更新记录。

我在EF中找不到任何办法。

    public static void UpdateMaterial(Material updatedMaterial)
    {
        using (var context = new ERPEntities())
        {
            context.materials.Attach(updatedMaterial);
            context.Entry(updatedMaterial).State = EntityState.Modified; 
            context.SaveChanges();
        }
    }

我想仅在updatedMaterial.LastUpdateDate等于DB记录的lastUpdateDate时才保存更改。我该怎么办?

2 个答案:

答案 0 :(得分:2)

您正在做的事情称为乐观并发。您需要告诉EF为您执行并发检查。该怎么做取决于你使用的EF版本。

  1. Code First w/ the fluent API中,使用IsRowVersionIsConcurrencyToken
  2. Code First w/ data annotations中,在
  3. 中添加[ConcurrencyCheck]注释
  4. Model First中,将该行的“并发模式”属性设置为“

答案 1 :(得分:0)

public static void UpdateMaterial(Material updatedMaterial)
{
    using (var context = new ERPEntities())
    {
        if(updatedMaterial.LastUpdateDate == context.materials.Find(updatedMaterial.Id).LastUpdateDate)
        {
            context.materials.Attach(updatedMaterial);
            context.Entry(updatedMaterial).State = EntityState.Modified; 
            context.SaveChanges();
        }
    }
}