LINQ to实体中仅支持LINQ无参数构造函数和初始值设定项
我使用下面的查询得到一个错误,使用EF+LINQLINQ to实体中仅支持LINQ无参数构造函数和初始值设定项,linq,entity-framework,Linq,Entity Framework,我使用下面的查询得到一个错误,使用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)
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();
var模型=(来自数据库帐户中的c)
让geo=新地理坐标(Convert.ToDouble(c.Latitude.Value),Convert.ToDouble(c.Longitude.Value))
式中((地理位置GetDistanceTo(CurrentCoord)/1000)<3)
orderby c.Name
选择新公司
{
Name=c.Name,
...
}).ToList();
运行时错误:
LINQ to实体中只支持无参数构造函数和初始值设定项
有人能解释一下失败的原因吗?实体框架试图将LINQ查询转换为可以针对数据库执行的SQL查询。因此,您不能在查询中使用
地理坐标
即使构造函数工作,Convert.ToDouble调用也会失败,因为它也无法转换为SQL
您可能需要研究在SQL和实体框架中的使用
或者您可能想编写自己版本的(这是您LINQ查询中的
GetDistanceTo
所使用的。实体框架应该能够很好地处理数学问题。您能建议我如何使用GeoCoordination和GetDistanceTo吗?您必须将所有数据从数据库中获取到应用程序内存,并以LINQ to Objects查询的方式运行查询。您很可能不想这样做。