我正在调用 SubmitChanges 来向我的 RIA 实体之一提交更改。该实体有一个属性,该属性具有一个 ObservableCollection 的 Items 属性。
我所做的唯一更改是在此列表中添加了一个条目。
当我在调用提交更改之前检查计数属性时,它是正确的计数。比方说 6。调用 SubmitChanges 后,客户端的计数为 1。并且列表仅包含新添加的项目,而不包含以前存在的项目。
在服务器上,操作表明所有 6 个项目都在那里,我使用 Fiddler 验证所有 6 个项目都返回给我的客户端。
但是,在应用程序中运行的下一行代码中,此列表的计数为 1(或新添加的项目数)。
我已经验证所有项目都正确存在,并且当我创建一个新的 DomainContext 并重新加载数据时,列表中的所有项目都在那里,即使是我添加的那些。
关于什么可能导致这种行为的任何想法?这些物品正在某处丢失。
这是有问题的对象以及正在丢失其条目的 ObservableCollection。
[DataContract(Name = "CT", Namespace = "http://domain/properties")]
public class ChoicePropertyType : PropertyType
{
[DataMember(Name = "C")]
public bool IsCustomValueAllowed { get; set; }
[DataMember(Name = "A")]
public bool AllowMultiple { get; set; }
private ObservableCollection<ValidValue> _defaultValues;
[Association("DefaultValues", "Id", "ParentId")]
[Include]
[Composition]
[DataMember(Name = "D")]
public ObservableCollection<ValidValue> DefaultValues
{
get
{
if (_defaultValues == null)
_defaultValues = new ObservableCollection<ValidValue>();
return _defaultValues;
}
}
}
[KnownType(typeof(ChoicePropertyType))]
[KnownType(typeof(DatePropertyType))]
[KnownType(typeof(NumberPropertyType))]
[KnownType(typeof(TextPropertyType))]
[KnownType(typeof(UserPropertyType))]
[DataContract(Name = "PT", Namespace = "http://domain/properties")]
public class PropertyType
{
[Key]
[DataMember(Name = "I")]
public string Id { get; set; }
[DataMember(Name = "P")]
public int? ParentId { get; set; }
[DataMember(Name = "R")]
public bool IsRequired { get; set; }
[DataMember(Name = "H")]
public bool HasDefaultValue { get; set; }
}