无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。
Posted 唐家湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。相关的知识,希望对你有一定的参考价值。
在一个项目中使用LINQ和EF时出现了题目所示的异常,搜索了很多资料都找不到解决办法,主要是因为EF方面的知识欠缺。
先将情况记录如下,以供以后参考。
查询主要设计两张表,由外键关联:
在进行下面的查询时,出现异常:无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。
public ActionResult GetIpSegments() { //List<Ipsegment> ipsegments = (from s in deviceDB.Ipsegment select s).ToList(); var ipsegments = from d in deviceDB.DeviceCategory join s in deviceDB.Ipsegment on d.devicecategoryid equals s.devicecategoryid select new { devicecategoryid1 = s.devicecategoryid, devicecategoryname1 = d.devicecategoryname, ipsegment = "202.115.242." + s.ip_head + "-202.115.242." + s.ip_end }; return Json(ipsegments, JsonRequestBehavior.AllowGet); }
后来,对查询做了修改,才成功。修改后的查询如下所示:
public ActionResult GetIpSegments() { var ipsegments = from s in deviceDB.Ipsegment select new { s.devicecategoryid, s.DeviceCategory.devicecategoryname, s.ip_head, s.ip_end }; return Json(ipsegments, JsonRequestBehavior.AllowGet); }
这其中的原因,现在还不了解,等了解后再作补充。
以上是关于无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。的主要内容,如果未能解决你的问题,请参考以下文章
“System.Int16”类型的对象无法转换为“System.Nullable”1[System.Int32] 类型
LINQ to Entities 无法识别方法“System.String StringConvert(System.Nullable`1[System.Double])
从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的无效转换