0

RIAサービス(Silverlight 4.0を使用)を使用して、依存エンティティを持つエンティティを挿入することについて質問がありました。

(sql)データベースに「Beer」というエンティティと「Supplier」というエンティティがあり、関係がBeer1-nSupplierであるとします。1種類のビールには複数のサプライヤーがあります。

ここで、次のユースケースがあります。ユーザーが、たとえば5つのサプライヤーと一緒に新しいビールを入力します。

Silverlightビューで、2つ取得しましDomainDataSourceた。ビールDomainDataSourceでは新しいビールを追加して送信し、サプライヤーDomainDataSourceでは現在のサプライヤーを送信します。これには、ビールにリンクする外部キーが含まれています。

私の質問は、ビールが最初に提出され、その後、依存(外部キーを覚えている)サプライヤーに提出されるようにするにはどうすればよいですか?

イベントのSubmitChanges()使用を単純に連鎖させることができることを私は知っています。OnSubmittedしかし、この解決策はかなり...まあ...ラメです。それはいくつかの本当に醜いコードになります。

たくさんのアイデアをありがとう!

4

1 に答える 1

1

残念ながら、同じChangeSetに含まれる更新の順序を強制する方法はありません。

ただし、すべての新しいサプライヤが新しいビール(大きなIF)とともにサーバーに送信された場合は、UpddateメソッドでChangeSetを手動で確認できます。

public void UpdateBeer(Beer beer)
{
    foreach(ChangeSetEntry changeSetEntry in ChangeSet.Entries)
    {
        if (changeSetEntry.Entity.GetType() == typeof(Supplier))
        {
            Supplier supplier = (Supplier)changeSetEntry.Entity;
            UpdateSupplierInternal(supplier);
        }
    }

    DataContext.Beers.Attach(beer, ChangeSet.GetOriginal(beer));
}

これは、サプライヤを更新するための別のメソッドを呼び出します。UpdateSupplierメソッドが必要です。そうでない場合、RIAはChangeSetに存在する場合に例外をスローしますが、メソッドは何もしません。

public void UpdateSupplier(Supplier supplier)
{
    // do nothing
}
于 2010-10-20T16:42:11.880 に答える