我正在尝试使用信息窗口在谷歌地图上映射各种标记。在我尝试通过控制器传递字符串之前,一切正常。
我收到以下错误:
“LINQ to Entities 无法识别 'System.String GetMainPhoto(Int32)' 方法,并且该方法无法转换为存储表达式。”
我读过这主要是因为 ToString 方法或其他一些方法无效使用造成的。但是,我不确定在这种情况下如何纠正这个错误。
基本上,我有一个 db - PropertyPhoto 保存图片的文件名。GetMainPhoto 基本上查找所有行并返回主图片文件名。
public string GetMainPhoto(int id)
{
return db.PropertyPhotos.Single(p => p.PropertyId == id && p.MainPic == true).PhotoLocation;
}
控制器如下:
public ActionResult Map()
{
if (Request.IsAjaxRequest())
{
var properties = websiteRepository.FindAllProperties();
var jsonProperties = from property in properties
select new JsonProperty
{
PropertyId = property.PropertyId,
NoOfBedroom = property.NoOfBedrooms,
Price = property.Price,
Address1 = property.PropertyAddress.Address1,
MainPicSrc = websiteRepository.GetMainPhoto(property.PropertyId),
Latitude = property.PropertyAddress.Latitude,
Longitude = property.PropertyAddress.Longitude
};
return Json(jsonProperties.ToList(), JsonRequestBehavior.AllowGet);
}
else
{
return View();
}
}