如何在继承实体上执行.Find
本文关键字:执行 Find 实体 继承 | 更新日期: 2023-09-27 18:25:29
在这种情况下,我有两个实体:Membre
继承自Utilisateur
。
我有一个ListView,所以我想显示当前显示的Membre
。产生错误的线路是
Membre lemembre = (lecontexte.Set<Membre>().Find(membrealecran.Pseudo));
我只想让这条线做一个.Find(membrealecran.Pseudo)
。。。但是我不能在Set<Membre>
上使用.Find
。
它生成一个System.ArgumentException和Data.EntitySqlException。它说Int32和String对于操作不兼容。。。
我可以在Utilisateur
上做.Find
,但不能在Membre
上。为什么?如何在Membre
上执行Find
?
protected void lvInscription_ItemDataBound(object sender, ListViewItemEventArgs e)
{
using (modele_vivo_amoreContainer lecontexte = new modele_vivo_amoreContainer())
{
try
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
Membre membrealecran = (Membre)e.Item.DataItem;
Membre lemembre = (lecontexte.Set<Membre>().Find(membrealecran.Pseudo));
}
}
catch (Exception ex)
{
lblMessage.Text += "ERREUR DE ITEMDATABOUND, " + ex.ToString();
}
}
.Find
正在通过主键搜索实体。您需要将主键作为参数传递。使用SingleOrDefault
按非主键参数进行查找:
...
Membre lemembre = lecontexte.Set<Membre>().SingleOrDefault(m => m.Pseudo == membrealecran.Pseudo);