情報ウィンドウを使用して、Googleマップにさまざまなマーカーをマップしようとしています。コントローラーを介して文字列を渡そうとするまで、すべて正常に機能しています。
以下のエラーが表示されます。
「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();
}
}