【发布时间】:2011-04-06 10:15:22
【问题描述】:
如何在不先检索记录的情况下更新记录的单个属性? 我在 EF Code First 4.1
的上下文中询问说我有一个类用户,映射到数据库中的表用户:
class User
{
public int Id {get;set;}
[Required]
public string Name {get;set;}
public DateTime LastActivity {get;set;}
...
}
现在我想更新用户的 LastActivity。我有用户 ID。我可以通过查询用户记录轻松地做到这一点,为 LastActivity 设置新值,然后调用 SaveChanges()。但这会导致冗余查询。
我使用 Attach 方法来解决。但是因为 EF 会在 Name 为 null 时引发验证异常,所以我将 Name 设置为随机字符串(不会更新回 DB)。但这似乎不是一个优雅的解决方案:
using (var entities = new MyEntities())
{
User u = new User {Id = id, Name="this wont be updated" };
entities.Users.Attach(u);
u.LastActivity = DateTime.Now;
entities.SaveChanges();
}
如果有人可以为我提供更好的解决方案,我会非常感激。请原谅我的任何错误,因为这是我第一次提出关于 SO 的问题。
【问题讨论】:
标签: entity-framework validation entity-framework-4.1