如何在继承实体上执行.Find



在这种情况下,我有两个实体: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);

最新更新