我有一个具有几个非常大的字符串属性的对象。此外,它还具有简单的时间戳属性。
我想要实现的是只更新timestamp属性而不将整个大对象发送到服务器。
最终,我想使用EF并以最高性能的方式做同样的事情:
update [...]
set [...] = [...]
where [...]
答案 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;