2

我在我正在维护的应用程序中遇到了这个 Linq to Sql 代码:

        dbDataContext db = new dbDataContext();
        db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

dbDataContext 是继承 System.Data.Linq.DataContext 的类

在此示例中,代码尝试刷新整个 DataContext,但它在 DataContext 实例化后立即被调用。这不是多余的吗?

此外,Refresh 调用似乎是在没有第二个参数的情况下调用该方法的重载。由于没有指定参数,所以没有要刷新的对象。那么在没有第二个参数的情况下,对 Refresh 的调用是否有任何目的?

4

2 回答 2

1

db.Refresh()因为没有任何改变,所以不需要在 create 之后正确调用。

http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.refresh.aspx

于 2012-06-12T14:07:11.923 回答
0

我终于开始使用 Telerik JustDecompile 来查看 .NET 代码,看看在没有第二个参数的情况下调用 Refresh 是否有任何目的。

缺少的第二个参数默认为包含 0 个项目的数组。因此,刷新逻辑在遇到 for..each 块时会提前退出。然后不会刷新任何项目。

总之,使用空白的第二个参数调用 Refresh 方法不会刷新 DataContext 中的任何项目。

于 2012-06-13T13:30:41.203 回答