【问题标题】:DataTable.Rows.Find gives "Table doesn't have a primary key" error when table gets too big当表变得太大时,DataTable.Rows.Find 给出“表没有主键”错误
【发布时间】:2010-11-20 00:51:07
【问题描述】:

使用 .NET 3.5 项目,我有一个从 MySQL 表填充的 DataTable。该表包含一个我需要搜索的“电子邮件”列。我正在显式设置主键,以下代码可以正常工作,直到我在表中获得 422 行或更多行。

object[] searchfor = new object[] { row["email"] };
DataColumn[] pk = new DataColumn[] { dtAccounts.Columns["email"] };
dtAccounts.PrimaryKey = pk;
match = dtAccounts.Rows.Find(searchfor);

我以为第 422 条记录中可能存在一些不良数据,但已证实并非如此。我得到的错误是“表没有主键”,它显然有。

【问题讨论】:

  • 我刚刚在我手动创建的包含 500 个条目的表上测试了您的代码,但没有收到错误。在此范围之外仔细检查您的代码。
  • 如果它没有主键,那就不是表! - 一些 SQL 大师 :-)

标签: c#


【解决方案1】:

我的错。我正在通过网络服务填写我的DataTable,一旦我达到 422 行,消息大小太大,我的DataTable 从未被填满。我只需要增加 app.config 文件中的 maxReceivedMessageSize 值。在这种情况下,错误消息没有多大帮助!

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 2016-08-05
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2012-10-23
    • 2011-08-14
    • 2016-04-09
    • 2014-09-07
    相关资源
    最近更新 更多