【问题标题】:How to load a DataGridView correctly while updated happening如何在更新发生时正确加载 DataGridView
【发布时间】:2014-08-09 18:03:18
【问题描述】:

我前段时间实现了一个 DataGridView。它工作得很好。现在我正在做一些重负载测试,但它失败了。它到处抛出异常,至少在它尝试加载数据时。

问题:DataContext 刷新

有一种方法可以刷新DataGridView 中的数据。

一个异常告诉我已经有一个DataReader 打开,我必须先关闭它。

第二个异常告诉我“在调用 submitchanges 期间无法执行该操作”。

问题是我自己没有使用DataReaders,我使用的是您在下面看到的方法:

 this.bindingSource.EndEdit();
 this.bindingSource.DataSource = null;

 // DataControl is my controler where the table is stored. It is a singleton.
 DataControl.Instance.m_DBTable.Context.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, DataControl.Instance.m_DBTable);
 this.bindingSource.ResetBindings(false);
 this.bindingSource.DataSource = DataControl.Instance.m_DBTable;

我希望有人可以帮助我解决这个问题。如果需要,请随时询问更多详细信息。

谢谢

抛出更多异常(不仅在该方法上,而且在同一表单上。)

  • 内部连接致命错误
  • Sql DateTime-Overflow(必须在 1/1/1753 和 21/31/9999 之间)(我真的总是初始化我所有的日期时间变量!)
  • 当没有可用数据时,读取操作无效。
  • 没有引用异常。

【问题讨论】:

  • 到处抛出异常——具体在哪里?至少一个例子。据我了解,您使用的是 LinqToSql,不是吗?您如何测试重负载?
  • 基本上每次DataGridView加载数据时。初始化后一切正常,表格得到正确更新。为了测试重负载,我将数据库连接到系统更改值。数据库上有大约 15 个新更新,DataGridView 应该显示表格。
  • 我对 LINQ to SQL 的经验非常有限,所以请告诉我 m_DbTable 的类型是什么?尝试阅读msdn.microsoft.com/en-us/library/vstudio/…。它可能包含一些有用的见解。
  • 我实际上没有写过一个 LINQToSQL 的代码行。我只使用 System.Data.Linq.Table - 命名空间进行了映射。然后 DataBinding 应该为我完成了这项工作。显然这不太好用。
  • 而且我仍然不明白如何使用测试重负载(en.wikipedia.org/wiki/Stress_testing)。您是启动程序的多个实例还是创建数据层的多个实例?是手动完成还是自动完成。在一台机器上还是几台机器上?

标签: c# winforms .net-3.5


【解决方案1】:

每当您遇到与此相关的错误时,请将您的数据阅读器包装在 using 语句中。这适用于任何读者/作家

using(var daraReader = new DataReader())
{

 // Use your data reader here, it will not be left open

}

【讨论】:

【解决方案2】:

DataContext 实际上并非设计为单例Using a Singleton pattern to Linq to Sql Data Context。这是您应该在代码中考虑的第一件事。

如果它不起作用 - 至少尝试剖析问题区域 (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。不要绑定数据。只需尝试将它们转储到文件或其他地方。我们将确保问题不是由绑定引起的。

如果它也不起作用,那么很可能由于 LINQ to SQL 和数据库中的并发问题而出现问题。看起来标准锁和机制无法按预期工作。或者他们工作太勤奋了。

很少有像样的文章http://blogs.msdn.com/b/matt/archive/2008/05/22/into-to-linq-to-sql-optimistic-concurrency.aspxhttp://www.codeproject.com/Articles/38299/How-To-Handle-Concurrency-in-LINQ-to-SQL 解释 LINQ 中的并发性。

我希望其中一些可以提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2012-06-16
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多