我有一个MVC2应用程序,我开始使用STE的。我正在寻找关于更新应该如何工作的一些说明。自我跟踪实体(STE)和EF4和mVC2的部分更新
背景:
如果我有相关的类别实体和相关岗位/评论实体博客实体。在MVC中,我使用主Blog实体和类别呈现视图,但不显示相关帖子。当我将博客实体回发到服务器时,我可以看到相关类别,但是在被序列化回服务器的实体中看不到帖子(因为它们不在视图中)。此外,博客实体的更改状态为“已添加”。
然后我尝试拨打此博客实体上的Applychanges()
和SaveChanges()
来执行更新,并且由于FK与帖子的关系以及数据库中存在相关帖子但未附加到实体的事实而失败送回。
随着一些进一步的测试...如果我连接到服务器(状态=不变)时抓取博客实体的当前实例(与所有相关的FK实体),修改一个属性(状态=修改)并更新它按预期工作。
所以我的问题: 如果我有相关的未被呈现在视图中,因此不回来后与博客实体应该更新实体机构开展工作?
为什么博客实体会以“已添加”状态发回而不是“已修改”?我会假设它会返回所有已更改实体的“修改”更改状态,然后当我调用ApplyChanges/SaveChanges()
时,只有修改的项目会尝试更新,这就是为什么我不需要所有相关实体的原因。
我应该能够直接从客户端传递实体,还是应该将实体回传给服务器,从数据库中抓取现有副本,将更改应用到该副本,然后将现有对象发回?
我打算将此标记为答案,因为您确实提供了一些相关的良好反馈。但总体回答是,这不会像我预期的那样使用MVC。我收到了迭戈维加在EF小组解释原因的回复。这里是他的回应链接: http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/cecdc8b4-3e1f-46ec-93fe-fd44f42fea9c/#fb8a242b-c8f2-4ac2-a28c- 4b948cac8c8c – Jay 2010-03-10 14:37:39