【发布时间】: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