我有一个winforms客户端应用程序,它使用datacontext运行。 我现在遇到某种并发问题,因为我的每个客户端都有自己的datacontext运行,并且当进行更改时,它们会将更改存储在数据库中。但是,当用户A在Object_1中进行更改并将更改存储在数据库中时,用户B无法看到用户A对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吗?
答案 0 :(得分:1)
DataContext.Refresh
模式不是通用的,因此您的特殊外壳几乎没有任何好处;而空catch
只是不好的做法(这可能就是为什么你不知道为什么它不起作用:它可能试图告诉你,但你忽略了它)。因此,在“最佳实践”方式中,您将简化:
public void UpdateObject(object obj)
{
DataContext.Refresh(RefreshMode.OverwriteCurrentValues, obj);
}
如果它不起作用,可能会throw
告诉你为什么不这样做。