1

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 は更新されません。

この問題を解決するにはどうすればよいですか?

4

0 に答える 0