SubmitChanges を呼び出して、RIA エンティティの 1 つに変更を送信しています。このエンティティには、アイテムの ObservableCollection であるプロパティを持つプロパティがあります。
私が行った唯一の変更は、このリストにエントリを追加したことです。
Submit changes を呼び出す前に count プロパティを確認すると、正しいカウントです。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; }
}