Entity Framework 5 Aktualizacja rekordu

Badałem różne metody edycji / aktualizacji rekordu w Entity Framework 5 w środowisku ASP.NET MVC3, ale jak dotąd żaden z nich nie zaznaczył wszystkich potrzebnych mi pól. Wyjaśnię dlaczego.

Znalazłem trzy metody, o których wspomnę za i przeciw:

Metoda 1 - Załaduj oryginalny rekord, zaktualizuj każdą właściwość

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    original.BusinessEntityId = updatedUser.BusinessEntityId;
    original.Email = updatedUser.Email;
    original.EmployeeId = updatedUser.EmployeeId;
    original.Forename = updatedUser.Forename;
    original.Surname = updatedUser.Surname;
    original.Telephone = updatedUser.Telephone;
    original.Title = updatedUser.Title;
    original.Fax = updatedUser.Fax;
    original.ASPNetUserId = updatedUser.ASPNetUserId;
    db.SaveChanges();
}    

Plusy

Może określić, które właściwości się zmieniająWidoki nie muszą zawierać każdej właściwości

Cons

2 x zapytania do bazy danych, aby załadować oryginał, a następnie zaktualizować go

Metoda 2 - Załaduj oryginalny rekord, ustaw zmienione wartości

var original = db.Users.Find(updatedUser.UserId);

if (original != null)
{
    db.Entry(original).CurrentValues.SetValues(updatedUser);
    db.SaveChanges();
}

Plusy

Tylko zmodyfikowane właściwości są wysyłane do bazy danych

Cons

Widoki muszą zawierać każdą właściwość2 x zapytania do bazy danych, aby załadować oryginał, a następnie zaktualizować go

Metoda 3 - Dołącz zaktualizowany rekord i ustaw stan na EntityState.Modified

db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();

Plusy

1 x zapytanie do bazy danych o aktualizację

Cons

Nie można określić, które właściwości się zmieniąWidoki muszą zawierać każdą właściwość

Pytanie

Moje pytanie do was; czy istnieje czysty sposób na osiągnięcie tego celu?

Może określić, które właściwości się zmieniająWidoki nie muszą zawierać wszystkich właściwości (takich jak hasło!)1 x zapytanie do bazy danych o aktualizację

Rozumiem, że to dość drobna sprawa, ale może mi brakować prostego rozwiązania tego problemu. Jeśli nie metoda pierwsza zwycięży ;-)

questionAnswers(7)

yourAnswerToTheQuestion