1

データコンテキストで実行されるwinformsクライアントアプリがあります。現在、ある種の同時実行の問題が発生しています。各クライアントで独自のデータコンテキストが実行されているため、変更が加えられると、変更がデータベースに保存されます。しかし、ユーザー A が Object_1 に変更を加え、その変更をデータベースに保存すると、ユーザー B は、ユーザー A が object_1 に加えたこれらの変更を見ることができません。

  • 私が望むのは、ユーザーが object_1 を開くたびに、Object_1 をデータベースの値で更新することです。

DataContext.Refresh メソッドを使用しようとしましたが、データベースの値でオブジェクトを更新していないようです。コードサンプルを次に示します。

    public void updateObj(object obj)
    {
        if (hvilken is Apartment)
        {
            try
            {
                DataContext.Refresh(RefreshMode.OverwriteCurrentValues, obj);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        if (hvilken is Customer)
        {
            try
            {
                DataContext.Refresh(RefreshMode.OverwriteCurrentValues, obj);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

データベース内の最新の値で DataContext を更新するための最善の方法はありますか?

4

1 に答える 1

1

モードは一般DataContext.Refresh的ではないため、特別なケースにはほとんどメリットがありません。空catchは単に悪い習慣です (実際には、それが機能しない理由がわからないのかもしれません: それはあなたに伝えようとしているのかもしれませんが、あなたはそれを無視しています)。したがって、「ベストプラクティス」の方法では、次のように単純化します。

public void UpdateObject(object obj)
{
    DataContext.Refresh(RefreshMode.OverwriteCurrentValues, obj);
}

うまくいかない場合は、おそらくthrow理由を教えてくれるでしょう。

于 2013-08-30T08:54:04.310 に答える