【问题标题】:"Table does not contain primary key"“表不包含主键”
【发布时间】:2018-09-19 19:55:34
【问题描述】:

我正在尝试根据从数据网格视图中选择的值成员填充组合框。

这是我的初始化代码

            DataSet dsCIF2 = new DataSet();
            DataRow drPitch;
            String sqlPitch = @" Select * from Pitch";
            String connStr5 = Properties.Resources.cString;
            SqlDataAdapter daPitch = new SqlDataAdapter(sqlPitch, connStr5);
            DataTable dtPitch = new DataTable();
            daPitch.Fill(dtPitch);
            daPitch.Fill(dsCIF2, "Pitch");

            comboBox2.DisplayMember = "PitchDesc";
            comboBox2.ValueMember = "PitchID";
            comboBox2.DataSource = dtPitch;

通过以下代码,我使用它从数据网格视图上的选定行中查找音高 ID,并返回正确的音高 ID,如通过调试所见。

 int matchBookingID = 0;
            matchBookingID = Convert.ToInt32(DGV.SelectedRows[0].Cells[0].Value);
            drMatchData = dsCIF.Tables["MatchStats"].Rows.Find(matchBookingID);
                Pitch = Convert.ToInt32(drMatchData["PitchID"].ToString());

现在,当我尝试使用该 ID 在音高表中查找数据行时,我收到一条错误消息

表没有主键

在这行代码

                drPitch = dsCIF2.Tables["Pitch"].Rows.Find(Pitch);

我不知道为什么会收到此错误,在此先感谢!

更新:该表确实有一个主键 SQL 代码

create TABLE PITCH
(
PitchID int NOT NULL,
PitchDesc varchar(30) NOT NULL,
CONSTRAINT pkPitchID PRIMARY KEY(PitchID),
)

【问题讨论】:

  • 我的直觉回答是,您没有将 ID 字段设置为 SQL 数据库中的主键。 EF 不能很好地处理没有主键的表。
  • 更新:是的,该表确实有主键,我什至删除了它并使用新值再次创建它
  • 能否将表创建脚本导出为 SQL 查询并将其添加到问题中?
  • @DylanBrams 我已经尝试过了,没有任何区别。还是谢谢你的建议

标签: c# sql-server


【解决方案1】:

原来我忘了填写表格的架构。现在我已经在初始化代码中添加了以下代码行

daPitch.FillSchema(dsCIF2, SchemaType.Source, "Pitch");

现在看起来像这样

DataSet dsCIF2 = new DataSet();

String sqlPitch = @" Select * from Pitch";
String connStr5 = Properties.Resources.cString;
SqlDataAdapter daPitch = new SqlDataAdapter(sqlPitch, connStr5);
SqlCommandBuilder cmdBPitch = new SqlCommandBuilder(daPitch);

daPitch.FillSchema(dsCIF2, SchemaType.Source, "Pitch");

DataTable dtPitch = new DataTable();
daPitch.Fill(dtPitch);
daPitch.Fill(dsCIF2, "Pitch");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 2019-01-25
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多