LightSwitch - “参考属性不能设置为已删除或丢弃的实体。”

时间:2012-10-31 17:12:47

标签: c# exception visual-studio-lightswitch

我在尝试定义包含在另一段数据中的数据成员时遇到此异常。

示例:

Container newRecord = this.DataWorkspace.ApplicationData.Containers.AddNew();
newRecord.SubContainer = this.DataWorkspace.ApplicationData.SubContainers.AddNew();

第二行遇到例外"Reference properties cannot be set to deleted or discarded entities."

我不明白它正在谈论它被丢弃或删除的实体,所以对此问题的任何帮助都将非常感激。

代码行位于LightSwitch中定义的接口函数中,该函数从Silverlight项目调用,将数据从该项目传递到LightSwitch项目。

2 个答案:

答案 0 :(得分:1)

我最终设法做到这一点,我需要在'逻辑'线程,我不是。我花了一点时间试图找到一个this.DataContext,但不能(我的Silverlight项目有这个但不是LightSwitch项目)。

最终我发现了我需要做的事情:

this.Details.Dispatcher.BeginInvoke(() =>
{
Container newRecord = this.DataWorkspace.ApplicationData.Containers.AddNew();
newRecord.SubContainer = this.DataWorkspace.ApplicationData.SubContainers.AddNew();
newRecord.exampleIntProperty=2;
newRecord.SubContainer.innerString="Example";
});

然后我可以将数据分配给newRecord的属性及其包含的对象的属性(例如示例SubContainer的属性),但显然直到LightSwitch才会保存新记录被指示保存其数据。

答案 1 :(得分:0)

您的代码需要稍微更改一下:

Container newRecord = this.DataWorkspace.ApplicationData.Containers.AddNew();
SubContainer newSub = newRecord.SubContainers.AddNew();

如果导航属性未被称为 SubContainers ,则只需使用正确的名称替换它。