Я создаю мобильное приложение MVC и столкнулся со многими проблемами, но это меня очень беспокоит.
Это класс Message, к которому я обращаюсь:
public class Message
{
public int MessageID { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public DateTime Recieved { get; set; }
[ForeignKey("User")]
public int AuthorUserID { get; set; }
//P\\ Navigation properties
public virtual ICollection<MessageRecipient> MessageRecipients { get; set; }
public virtual User User { get; set; }
}
Я создаю новый объект Message и сохраняю его в базе данных.
messageService.AddMessage(newMessage);
Message freshMessage = messageService.GetNewestMessage();
На данный момент к нему не прикреплены Получатели. Пользователь Получает перенаправление в представление, где он может добавлять получателей к сообщению.
Когда пользователь добавляет получателя, я вызываю метод через ajax, который создает объект MessageRecipient и добавляет его в коллекцию получателей сообщения.
message.MessageRecipients.Add(recipient);
Идеальная ситуация: когда пользователь заканчивает добавлять получателей и возвращается в представление редактирования, добавленные получатели становятся видимыми.
Когда вызывается действие Edit, вызывается метод GetMessage
Message message = messageService.GetMessage(id);
Поскольку это сообщение было получено до того, как оно будет храниться в ObjectContext, EF будет обслуживать меня из памяти, а не запрашивать в БД новую, и это то, что я хочу, чтобы это произошло. Я не знаю, как сохранить изменения в этом ObjectContext без сохранения изменений в Db, вызвав SaveChanges ().
Итак, мой вопрос: есть ли способ изменить состояние сущности, хранящейся в памяти, чтобы в следующий раз, когда к нему поступил запрос, я получил сущность с изменениями, которые я в нее внес?
Я просто хочу поработать с объектом и сохранить его в Db, когда я закончу с ним, а не совершать поездку в Db каждый раз, когда пользователь добавляет получателя в сообщение.
Я новичок в .NET и EF ...
Буду признателен за любую помощь.