在一個項目中使用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); }
這其中的原因,現在還不了解,等了解后再作補充。