0

Windows phone 7 で WCF データ サービスを使用しています。リレーショナル データをシングル クリックで保存するにはどうすればよいですか?

it's think 2 テーブル: カテゴリと製品

データUIを保存したい:

カテゴリテーブルから:-
CategoryId : (自動インクリメント)
CategoryName : abc

製品テーブルから:-
ProductId :-(自動インクリメント)
CategoryId :- ? (どうすれば取得できるかわかりません)
ProductsName : xyz

ボタン保存クリックで:

上記のデータを適切なテーブルに挿入したいのですが、どうすればできますか?

1つのテーブルデータを追加するために次のコードを使用しています:

try
{
     context = new NorthwindEntities(NorthwindUri);
     context.AddToProducts(product);
     context.BeginSaveChanges(new AsyncCallback((result) =>
     {
         bool errorOccured = false;

         // Use the Dispatcher to ensure that the 
         // asynchronous call returns in the correct thread.
         Deployment.Current.Dispatcher.BeginInvoke(() =>
         {
             context = result.AsyncState as NorthwindEntities;

             try
             {
                  // Complete the save changes operation and display the response.
                  DataServiceResponse response = context.EndSaveChanges(result);

                  foreach (ChangeOperationResponse changeResponse in response)
                  {
                      if (changeResponse.Error != null) errorOccured = true;
                  }
                  if (!errorOccured)
                  {
                      MessageBox.Show("The changes have been saved to the data service.");
                  }
                  else
                  {
                      MessageBox.Show("An error occured. One or more changes could not be saved.");
                  }
              }
              catch (Exception ex)
              {
                   // Display the error from the response.
                   MessageBox.Show(string.Format("The following error occured: {0}", ex.Message));
              }
         });
    }), context);
}
catch (Exception ex)
{
    MessageBox.Show(string.Format("The changes could not be saved to the data service.\n"
        + "The following error occurred: {0}", ex.Message));
}
4

1 に答える 1

1

OData では、リレーションシップは外部キーとして表されるのではなく、ナビゲーション プロパティとして表されます。次に、クライアント ライブラリのリンクを操作してそれらを操作します。この記事をご覧ください: http://msdn.microsoft.com/en-us/library/dd756361(v=vs.103).aspx データを変更する複数のメソッドを呼び出してから、SaveChanges を呼び出してそれらすべてをサーバー。ただし、サーバーが参照整合性を必要とし、たとえば 2 つの関連するエンティティを同時に追加する場合は、SaveChanges(Batch) を使用する必要があるかもしれません (これにより、クライアントはすべてを 1 つの要求で送信するため、サーバーは単一のトランザクションとして処理します)。

于 2012-06-16T18:19:12.720 に答える