日期:2014-05-20  浏览次数:20926 次

How to process partial update for Entity Framework
Entity Framework's Update 功能不够灵活。Default Update 是更新所有的修改,然而我们有时只需要部分修改就可以了。比方说使用 TapControl,Tap1邦定联系信息、Tap2邦定地址。如果只想保存Tap1联系信息、Tap2的地址不能为空,这时验证就过不去。
我的问题是只保存Tap1的联系信息,Tap2邦定地址不保存。怎样才能实现呢?谢谢!(请提供具体代码)

------最佳解决方案--------------------
Don't put all of content in the same page. Define standalone views related with each Tap. TapControl should be used as navigation. So, you should define an index action for that. This way, you can handle each Tap's content independently.  
------其他解决方案--------------------
晕,把要修改的 Entity 查出来,然后再手动赋值修改不就可以了,不想更新的对象可以 Detach 
------其他解决方案--------------------
感觉你在说MVC框架。。。和entity有什么关系?
------其他解决方案--------------------
1楼说的有道理
先根据条件查出你所要修改的实体类:
var query=db.YourTable.SingleOrDefault(t=>t.Id==1);
if(query!=null)
{
  query.Tap1="new data";
  db.SubmitChanges();
}
------其他解决方案--------------------
是的呀。。你先根据条件先查找你需要的内容,然后更新呀啥的!
------其他解决方案--------------------
非常感谢各位朋友的回复。问题似乎得到了解决,以后我会整理清楚我的问题和解决方法。这是一个ASP.NET MVC3 + Entity Framework4 Web Application, 一个类似Facebook的网站.

根据要求,录入客户信息要分布在4个Taps中,分别为:Contact, Address, Privacy and Interest。每个Tap 都有一个Submit Button, 用来提交当前Tap的内容。我先是使用 4 个 Partial Views 来表示每个Tap。第一个错误我犯的是在每个Tap中定义了一个Form。结果是提交后 Null Values appears。后来,在Parent Page 里定义一个Form,就出现了我帖子所说的问题。由于每个Tap都有几个[Required]fields,所以,当提交某个Tap时,系统会检查所有的[Required]fields。也就是说,当录入完成Contact Information, 而Address Information 中[Required]fields 为空时,就无法保存Contact Information。

我的问题与下面的几个连接中所提的问题类似。暂不结贴,望得到更多的建议。

http://stackoverflow.com/questions/8738487/losing-data-in-models-and-collections-inside-the-viewmodel-on-postback
http://stackoverflow.com/questions/9087994/return-partial-view-to-same-view
http://stackoverflow.com/questions/7994026/passing-multiple-models-to-views-and-partialviews-in-asp-net-mvc-3

------其他解决方案--------------------
EF 先查询出modle实体 再在实体的基础上做修改 update   最后再savechange()  也只是与服务器交互一次;
------其他解决方案--------------------
引用:
EF 先查询出modle实体 再在实体的基础上做修改 update   最后再savechange()  也只是与服务器交互一次;


貌似问题的答案是一致的,只是普通的修改而已
------其他解决方案--------------------
再次感谢朋友的回复。但我的问题是关于前台的,关于Controllers、view、转递的Model以及PartialView or PartialViewResult。希望ASP.NET MVC专家指点。
------其他解决方案--------------------
可以Remove 无关的属性,这样就可以使用ModeState通过验证