Я реализовал базовый контроллер для своего проекта MVC 3, чтобы разрешить общий способ доступа к пользовательской сущности из моего контекста БД:
public abstract class MyBaseController : Controller
{
protected DBEntitiesContainer db;
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
this.db = new DBEntitiesContainer();
}
public UserDetails GetActiveUserDetails()
{
UserDetails userDetails = GetObjects.GetActiveUserDetails(this.db);
return userDetails;
}
}
Это прекрасно работает, и все мои контроллеры имеют доступ к this.db.MyEntity
и может извлечь объект UserDetails
, вызвав this.GetActiveUserDetails()
Однако проблема возникает, когда я пытаюсь выполнить обновление сущности следующим образом:
public class UpdateController : MyBaseController
{
public ActionResult Index()
{
UserDetails userDetails = this.GetActiveUserDetails();
userDetails.LastOnline = DateTime.Now;
UpdateModel(userDetails);
this.db.SaveChanges();
}
}
Любые идеи, почемуобъект UserDetails
легко извлекается, но когда я проверяю свою базу данных после вызова SaveChanges()
, ничего не обновляется?Я предполагаю, что я получаю доступ к своему контексту двумя различными способами, но я не могу видеть, как я ...!
Редактировать: вот метод GetObjects.GetActiveUserDetails ()
public static UserDetails GetActiveUserDetails(DBEntitiesContainer db)
{
MembershipUser membershipUser = Membership.GetUser();
UserDetails userDetails;
try
{
if (membershipUser != null)
{
userDetails = (from u in db.UserDetails
where (u.UserId == (System.Guid)membershipUser.ProviderUserKey)
select u).First();
}
else
{
return GetGuestAccount();
}
}
catch
{
return GetGuestAccount();
}
return userDetails;
}
Не самый чистый метод, который я знаю ...