我正在构建移动MVC应用程序,偶然发现了很多问题,但这让我感到非常沮丧。是否有可能更新保存在ObjectContext中的对象以便重用而不保存到数据库?
这是一个Message类即时reffering到:
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; }
}
我创建了新的消息对象并将其保存在数据库中。
messageService.AddMessage(newMessage);
Message freshMessage = messageService.GetNewestMessage();
此时它没有附加收件人。用户获取重定向到一个视图,他可以将收件人添加到消息中。
当用户添加收件人时,我通过创建MessageRecipient对象的ajax调用方法,并将其添加到邮件的收件人集合中。
message.MessageRecipients.Add(recipient);
理想的情况是:当用户完成添加收件人并返回到编辑视图时,添加的收件人是可见的。
当编辑动作被调用getMessage方法被调用
Message message = messageService.GetMessage(id);
因为在此之前,将在ObjectContext中举行这个消息已经被检索,因此EF将成为我的记忆,而不是查询数据库实体为新鲜的,这是我想要发生的事情。我不知道如何通过调用SaveChanges()来保存对ObjectContext的更改,而不保存对Db的更改。
所以我的问题是:有没有办法改变存储器中保存的实体的状态,所以下一次查询它时,我得到了实体与我所做的更改?
我只想与对象一起工作,并在完成它时将其保存到Db,而不是每次用户将收件人添加到消息时都去Db旅行。
我是新来.NET和EF ...
任何帮助,将不胜感激。
通过“Mobile MVC”你的意思是什么?它是移动设备上的有状态客户端,还是移动设备使用的Web应用程序? – 2012-03-14 14:54:07
我的意思是移动设备使用的MVC网络应用程序 – Pawel 2012-03-14 14:58:54