LINQ to Entities中只支持无参数构造函数和初始化函数



我得到一个错误使用下面的查询,使用EF + LINQ

 var model = (from c in _db.Accounts
              let geo = new GeoCoordinate(Convert.ToDouble(c.Latitude.Value), Convert.ToDouble(c.Longitude.Value))
              where ((geo.GetDistanceTo(CurrentCoord) / 1000) < 3) 
              orderby c.Name
              select new CompanyVM
              {
                  Name = c.Name,
                  ... 
              }).ToList();
运行时错误:

LINQ to Entities只支持无参数构造函数和初始化式。

有人能解释一下为什么它失败了吗?

实体框架试图将您的LINQ查询转换为可以对数据库执行的SQL查询。因此,您不能在查询中使用GeoCoordinate

即使构造函数工作,Convert.ToDouble调用也会失败,因为它也不能转换为SQL。

你可以考虑在SQL和实体框架中使用空间数据。

或者你可能想写你自己的版本的哈弗斯公式(这是一个使用的GetDistanceTo在你的LINQ查询。实体框架应该能很好地处理数学

相关内容

  • 没有找到相关文章

最新更新