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 回答