实例化新的 DataContext 和使用空数组参数调用 DataContext.Refresh 之间是否有区别



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

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

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

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

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

您是正确的,在创建后调用db.Refresh()是不必要的,因为没有任何变化。

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

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

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

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

最新更新