我在维护的应用程序中遇到了这个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 方法不会刷新数据上下文中的任何项。