ASP.NET中的Linq到SQL、Ajax回发和页面状态

ASP.NET中的Linq到SQL、Ajax回发和页面状态,asp.net,linq-to-sql,session-state,Asp.net,Linq To Sql,Session State,这应该是一个经常出现的问题,但似乎还不是这样。我正在为一个允许对内存模型进行各种数据更改的应用程序使用LINQtoSQL,然后这些更改将被放入队列中进行异步处理。所以,我并不担心更新。 可以通过网页上的模式弹出窗口更改数据的各个部分。有些是基于网格的,有些只是属性。 我遇到了一个问题,更改无法通过回发周期。显然,我不想将任何内容保存到数据库中,直到所有更改完成并且用户提交页面 到目前为止,我选择的路线是: 我禁用了延迟加载 我为我的根对象创建了一个[serializable]分部类 我将对象放

这应该是一个经常出现的问题,但似乎还不是这样。我正在为一个允许对内存模型进行各种数据更改的应用程序使用LINQtoSQL,然后这些更改将被放入队列中进行异步处理。所以,我并不担心更新。 可以通过网页上的模式弹出窗口更改数据的各个部分。有些是基于网格的,有些只是属性。 我遇到了一个问题,更改无法通过回发周期。显然,我不想将任何内容保存到数据库中,直到所有更改完成并且用户提交页面

到目前为止,我选择的路线是:

  • 我禁用了延迟加载
  • 我为我的根对象创建了一个[serializable]分部类
  • 我将对象放入会话中,并在onload事件中检索它
这似乎在原则上可行。但是,当我在从会话检索对象后尝试更新一些子对象的属性时

p.PhysicianSpecialties[0].physician_specialty_code = 
    ddlSpecialty.SelectedItem.Value;
我得到这个错误:

Operation is not valid due to the current state of the object.
错误是由生成的Linq setter方法中的此方法调用引起的:

this.SendPropertyChanging();
其他属性可以很好地更新:

p.PhysicianNames[0].first_name = txtFirstName.Text.ToUpper();
这不会导致错误

我的问题是:我是否从根本上走错了方向?有更好的方法吗?错误的原因是什么

更新:
异常为“System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException”。我想,但我还不知道解决方案。

我从MSDN那里得到了解决方案。问题是,这比我所能做的更好地解释了,一个人不能单方面地改变一个关联,而必须通过分配一个新的子对象,而不仅仅是通过改变id来改变它的两端:

p、 Physician Specialties[0]。Physician Special蒂Lookup= db.Physician SpecialtyLookups.Single(c=>
(c.medicine_speciality_code==ddldspeciality.SelectedItem.Value))

如果使用数据绑定,如何做到这一点?我在数据网格视图中有一个下拉列表,当我更改下拉值时,该下拉列表开始抛出此错误。这让我觉得要么删除关联,要么不使用数据绑定

您将什么绑定到下拉列表?