SL アプリに EF+WCF Ria Service を使用しています。Person、PersonPhone という 2 つのテーブルがあるとします。2 つのエンティティが EF によって作成されます。
次に、PersonPhone を WCF ria サービスのメタ データの複合として次のように定義します。
[MetadataTypeAttribute(typeof(Person.PersonMetadata))]
public partial class Person
{
internal sealed class PersonMetadata
{
private PersonMetadata()
{
}
[Include]
[Composition]
public EntityCollection<PersohPhone> PersonPhone { get; set; }
//......
}
}
次に、wcf ria サービス メソッドを次のように定義します。
public IQueryable<Person> GetPersonByID(int id)
{
var result = this.ObjectContext.Persons.Include("PersonPhone")
.Where(x => x.PersonID == id);
return result;
}
次に、SL アプリでこのメソッドを次のように呼び出します。
Context.Load<T>(Context.GetPersonByIDQuery(id), LoadBehavior.RefreshCurrent, r =>
{
//......
}, null);
問題は: 初めて電話をかけても大丈夫です。PersonPhone はすべて読み込まれています。
テスト目的で、SL アプリの PersonPone から一部のデータを削除しますが、DB には保存しません。
Person.PersonPhone.Remove(personphone);
または:
Person.PersonPhone.Detach(personphone);
その後、SL アプリで Person を再度読み込むメソッドを呼び出します。Person.PersonPhone は更新されません。
この問題を解決するにはどうすればよいですか?