使用最新的数据库值更新DataContext

时间:2013-08-30 08:48:27

标签: c# datacontext

我有一个winforms客户端应用程序,它使用datacontext运行。 我现在遇到某种并发问题,因为我的每个客户端都有自己的datacontext运行,并且当进行更改时,它们会将更改存储在数据库中。但是,当用户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吗?

1 个答案:

答案 0 :(得分:1)

DataContext.Refresh模式不是通用的,因此您的特殊外壳几乎没有任何好处;而空catch只是不好的做法(这可能就是为什么你不知道为什么它不起作用:它可能试图告诉你,但你忽略了它)。因此,在“最佳实践”方式中,您将简化:

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

如果它不起作用,可能会throw告诉你为什么不这样做。

相关问题