将cmbx强制转换到数据库实体时出现异常
本文关键字:实体 异常 数据库 cmbx 转换 | 更新日期: 2023-09-27 17:59:24
这是我第一次写作,希望你不要评判太多!:)
我也会彻底的让你完全理解。
我创建了一个包含几个表的数据库,其中一个表是Genre
。我将ADO.NET实体数据模型用于与给定数据库的WPF连接。我已经在GenreDal中创建了一个删除选定流派的方法。制作了一个包含流派(名称)和删除按钮的组合框。在点击事件中,我键入
{
Genre g = (Genre)comboboxGenre.SelectedItem;
GenreDal d = new GenreDal();
d.RemoveGenre(g);
}
之后,我运行并测试了应用程序,但每次都会弹出一个异常。说它是
无法将"System.String"转换为"MusicStoreApp"
我不明白,希望你们能帮忙!如果您需要更多信息,只需询问即可。
来自组合框Zaner.Itemssource=d.ShowGenres()。选择(p=>p.GenreName);`若要绑定到IEnumerableOFSTRING,就必须绑定到模型的列表。列出
comboboxZanr.Itemssource = d.ShowGenres();
然后你可以做
Genre g = (Genre)comboboxGenre.SelectedItem;
GenreDal d = new GenreDal();
d.RemoveGenre(g);
谢谢大家,在的帮助下,我接受了每一个建议,并将其结合起来,最终解决了问题
cmbx.DisplayMemberPath = "GenreName";
cmbx.SelectedValuePath = "GenreId";
tnx再次:)
你在帖子中说制作了一个带有流派(名称)的组合框,并点击删除按钮。。。这意味着你的组合框是string
的集合,因此SelectedItem
会为你获得当前选择的流派名称,即string
,并且由于它不是Genre
类型,因此显然不能广播回Genre
对象。
解决方案:
要么用List<Genre>
作为数据源构建组合框。
或者,从组合框中获取选定的流派名称,然后获取特定的流派(如)
string genrename = comboboxGenre.SelectedItem;
Genre g = db.Genres.Single(g => g.Name == genrename);
**考虑到流派名称是唯一的,否则Single()
将抛出异常。