У меня есть 2 проекта - библиотека классов, содержащая модель EDM Entity Framework и отдельный проект ASP.NET MVC.
У меня проблемы с тем, как вы предполагаете редактировать и сохранять изменения в сущности с помощью MVC. В моем контроллере у меня есть:
public class UserController : Controller
{
public ActionResult Edit(int id)
{
var rep = new UserRepository();
var user = rep.GetById(id);
return View(user);
}
[HttpPost]
public ActionResult Edit(User user)
{
var rep = new UserRepository();
rep.Update(user);
return View(user);
}
}
Мой UserRepository
имеет такой метод обновления:
public void Update(User user)
{
using (var context = new PDS_FMPEntities())
{
context.Users.Attach(testUser);
context.ObjectStateManager.ChangeObjectState(testUser, EntityState.Modified);
context.SaveChanges();
}
}
Теперь, когда я нажимаю «Сохранить» на странице редактирования пользователя, параметр user
содержит только два заполненных значения: Id и FirstName. Полагаю, это связано с тем, что я показываю только эти два свойства в представлении.
Мой вопрос заключается в следующем: если я обновляю имя пользователя, а затем хочу его сохранить, что я предполагаю делать с другими свойствами пользователя
, которые не отображались в представлении, поскольку теперь они содержат значения 0 или NULL в объекте user
?
Я много читал об использовании объектов-заглушек, но не могу быстро добиться успеха в этом ни в одном из примеров, которые я ' я видел, что действительно работает. т.е. я продолжаю получать исключения, связанные с EntityKey.
Может ли кто-нибудь указать мне на хороший учебник / пример того, как обновлять объекты EF 4 с помощью класса репозитория, вызываемого интерфейсом MVC?