【发布时间】:2017-06-28 21:52:25
【问题描述】:
我的对象“Uitslag”有一个 List 属性,我如何对该列表中的每个项目执行非查询。
下面的代码给出了这个错误:
System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的未处理异常
附加信息:变量名称“@Partij_ID”已被声明。变量名称在查询批处理或存储过程中必须是唯一的。
public void AddUitslag(Uitslag uitslag)
{
using (SqlConnection connection = Database.Connection)
{
VerkiezingRepository VerkiezingRepo = new VerkiezingRepository(new SQLVerkiezingContext());
string query = "Insert into Uitslag(Naam, Datum, Verkiezing_ID, Partij_ID) values (@Naam, @Datum, @Verkiezing, @Partij_ID)";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Naam", uitslag.Naam);
command.Parameters.AddWithValue("@Datum", uitslag.Datum);
command.Parameters.AddWithValue("@Verkiezing", VerkiezingRepo.GetVerkiezing(uitslag.Verkiezing.Naam).ID);
foreach (Partij p in uitslag.DeelnemendePartijen)
{
command.Parameters.AddWithValue("@Partij_ID", p.Afkorting);
command.ExecuteNonQuery();
}
}
}
}
【问题讨论】:
-
该错误是因为您的 foreach 循环创建了多个具有相同名称的参数,这是不允许的。您想为每个项目“p”运行一个 INSERT 吗?如果是这样,请将您声明存储库的所有代码附在 foreach 中。
-
@ADyson 它不一定是 foreach 循环,但我认为它会工作
-
抱歉修改了我的评论,见上文。
-
@ADyson 成功了,谢谢!
-
我已将其添加为答案,如果您将其标记为已接受的答案,我将不胜感激(它对未来的读者很有用) - 谢谢 :-)
标签: c# sql database visual-studio