Это не хак. Что прискорбно, так это то, что прямые обновления одного столбца могут быть выполнены только с целым объектом в руке и с помощью необработанной строки SQL, подобной этой.

могу обновить одно свойство записи, не извлекая ее сначала? Я спрашиваю в контекстеEF Code First 4.1

Говорит, что у меня есть класс User, отображающий таблицу Users в базе данных:

class User
{
    public int Id {get;set;}
    [Required]
    public string Name {get;set;}
    public DateTime LastActivity {get;set;}
    ...
}

Теперь я хочу обновить LastActivity пользователя. У меня есть идентификатор пользователя. Я легко могу сделать это, запросив запись пользователя, установить новое значение 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.

Ответы на вопрос(3)

Ваш ответ на вопрос