无法将类型“System.Int32”强制转换为“System.Object”类型。 LINQ to Entities仅支持转换EDM原语或枚举类型

时间:2013-04-30 09:44:41

标签: asp.net-mvc

public ViewResult Medicament(string searchTerm)
    {


        if (!String.IsNullOrEmpty(searchTerm))
        {
           var Medicament = from s in db.MEDICAMENTs
                         from j in db.FOURNISSEURs
                         where s.ID_Fournisseur.Equals(j.CODE_FOUR) &&
                               j.NOM_FOUR.Equals(searchTerm)
                         select s;



             return View(Medicament.ToList().Any());
        }
                return View();
    }

我收到了这条消息:

无法将类型'System.Int32'强制转换为'System.Object'。 LINQ to Entities仅支持转换EDM原语或枚举类型。

2 个答案:

答案 0 :(得分:9)

请勿在此查询中使用Equals。请改用==。 Equals(object obj)在表达式中转换需要将此obj强制转换为具体类型,但LINQ to Entities不支持此类转换。

答案 1 :(得分:-1)

很长一段时间我不写实体查询,因为我的实际工作公司使用NHibernate。但我记得做过这样的一些问题:

public ViewResult Medicament(string searchTerm)
{
    if (!String.IsNullOrEmpty(searchTerm))
    {
        var Medicament = from s in db.MEDICAMENTs
                     from j in db.FOURNISSEURs
                     where s.ID_Fournisseur equals j.CODE_FOUR &&
                           j.NOM_FOUR equals searchTerm
                     select s;

        return View(Medicament.ToList().Any());
    }

    return View();
}