私は、ペットのリストを含む「Person」クラスを使用して小さなサンプルを作成しました。さらに、Personオブジェクトを保存/削除/選択できる単純なリポジトリもあります。 私のフォームにフォームビュー(または詳細ビュー)を配置し、自分のリポジトリを指すオブジェクトデータソースを選択します。これまでのところ完全に動作し、人を作成、更新、削除することができます...自分のビューのアイテムテンプレートにペットのコレクションを表示することもできます。ASP.NET:ネストされたコレクションを持つオブジェクトのデータバインディングと更新
しかし、私は人を更新するとき、私のペットのコレクションはクリアされています!オブジェクトバインディングソースの "Updating"イベントを見ると、e.InputParametersには自分が入力したすべての値が含まれていますが、ペットコレクションには常に0個のアイテムが含まれています。オブジェクトバインディングソースのSelectedイベントを見ると、e.ReturnValueには、ペットを含む選択した人物が含まれていますが、これは正しいです。何か案は?
私の人のクラスと私のリポジトリはここにあります。これは実際にはlinq2hibernateプロジェクトの小さなサンプルです。
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public List<Pet> Pets { get; set; }
public Person()
{
Pets = new List<Pet>();
}
}
[DataObject]
public class Repository
{
List<Person> people = new List<Person>();
public Repository()
{
//Code to load the person list
}
public Person FindByID(int ID)
{
return people.SingleOrDefault(x => x.ID == ID);
}
public List<Person> FindAll()
{
return people;
}
public void Save(Person person)
{
// code to save a person
// Here you can see a person's pets collection is always empty
// when this method is called by the objectdatasource
}
public void Delete(Person person)
{
}
public void Insert(Person person)
{
}
}