Хорошо, я уже некоторое время борюсь с этим.
У меня есть стандартный проект MVC2 и я использую EF4 для доступа к объектам данных. Многие из моих объектов данных (и, следовательно, таблиц базы данных) имеют два общих поля: UpdateUserAccountID и UpdateDate.
В каждом из моих контроллеров я в настоящее время устанавливаю эти поля вручную в каждом контроллере в действии Edit:
// POST: /Modes/Edit/2
[HttpPost]
public ActionResult Edit(int id, FormCollection formValues)
{
Mode mode = _repository.GetMode(id);
//Set update flags
mode.UpdateUserAccountID = _userRepository.GetUserID(User.Identity.Name);
mode.UpdateDate = DateTime.Now;
try
{
UpdateModel(mode);
_repository.Save();
return RedirectToAction("Details", new { id = mode.ModeID });
}
catch
{
return View(mode);
}
}
Проблема в том, что я хочу обновить эти два поля в центральном месте, независимо от типа контроллера. Я использую шаблон Repository / IRepository для своих объектов данных. Я также настроил BaseController, так как я думал, что мог бы передать свой объект 'mode' в примере выше общей функции в базовом контроллере для установки этих двух полей. Но я не мог понять это, и универсальная функция не знает об этих конкретных полях.
Должен ли я вместо этого создавать базовый класс для своих репозиториев? Я не могу представить, как это будет работать в рамках MVC. В веб-формах у меня просто был бы интерфейс, который все мои модели реализуют с общими полями, но я не могу приспособить его к подходу MVC.
Любая помощь в подходе была бы великолепна.