实体框架6:是否可以在不获取整个对象的情况下更新特定的对象属性?

时间:2017-01-04 08:56:51

标签: entity-framework entity-framework-6

我有一个具有几个非常大的字符串属性的对象。此外,它还具有简单的时间戳属性。

我想要实现的是只更新timestamp属性而不将整个大对象发送到服务器。

最终,我想使用EF并以最高性能的方式做同样的事情:

update [...]
set [...] = [...]
where [...]

2 个答案:

答案 0 :(得分:2)

使用以下内容,您可以更新单个列:

  var yourEntity = new YourEntity() { Id = id, DateProp = dateTime };
  using (var db = new MyEfContextName())
  {
    db.YourEntities.Attach(yourEntity);
    db.Entry(yourEntity).Property(x => x.DateProp).IsModified = true;
    db.SaveChanges();
  }

答案 1 :(得分:-1)

好的,我设法解决了这个问题。解决方案与Seany84提出的解决方案相同,只增加了禁用验证,以克服必填字段的问题。基本上,我必须在'SaveChanges()之前添加以下行:

 str = "3a45 12c3"
        strArray = str.split(" ");
        for (var i = 0; i< strArray.length;i++)
    {
        strArray[i] = strArray[i].replace(/\D/g,'');
    }
        myString = str.replace(/\D/g,'');
        alert(strArray.toString());

因此,完整的解决方案是:

db.Configuration.ValidateOnSaveEnabled = false;