【问题标题】:Table doesn't have a primary key表没有主键
【发布时间】:2011-04-03 19:28:43
【问题描述】:

我在使用 Find() 方法的行中出现以下异常(缺少主键)

“表没有主键。”

我重新检查了数据库,所有主键列都设置正确。

我的代码:

DataTable dt = p.GetAllPhotos(int.Parse(Id));
DataTable temp = new DataTable();
temp = dt.Clone();
temp = (DataTable)(Session["currentImage"]);
DataTable dtvalid = new DataTable();
dtvalid = dt.Clone();
DataRow[] drr = new DataRow[1];
drr[0] = dt.Rows.Find((int.Parse(temp.Rows[0]["photoId"].ToString()))+1);
foreach (DataRow dr in drr)
{
    dtvalid.ImportRow(dr);
}
dtvalid.AcceptChanges();'

【问题讨论】:

  • 你到底想达到什么目的?

标签: c# asp.net mysql


【解决方案1】:

在调用 Find

之前,您需要设置 DataTable 对象的 PrimaryKey 属性
DataColumn[] keyColumns = new DataColumn[1];
keyColumns[0] = dt.Columns["<columnname>"];
dt.PrimaryKey = keyColumns;

【讨论】:

  • 非常感谢,这就是解决方案。我认为这类似于我们应该在 ASP.net 中识别某些控件的数据键名属性时
  • 注意正确复制列名。我在代码中有 DemoKey_pk,但存储过程返回的是 DemoKey_fk。由于没有返回 DemoKey_pk(DemoKey_fk 是/是),我的代码抛出了“表没有主键”异常。
猜你喜欢
  • 2019-05-23
  • 2013-07-27
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2013-05-09
  • 1970-01-01
相关资源
最近更新 更多