首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空间DbGeography提供程序Effort.EF6异常[找不到可用的空间提供程序。]

空间DbGeography提供程序Effort.EF6异常[找不到可用的空间提供程序。]
EN

Stack Overflow用户
提问于 2015-02-27 12:18:02
回答 1查看 1K关注 0票数 1

我正在用EF6开发一个应用程序,我决定对我的位置使用System.Data.Entity.Spatial.DbGeography,如下所示

代码语言:javascript
复制
public class Place
{
  public int Id { get; set; }
  public string Name { get; set; }
  public DbGeography Location { get; set; }
} 

当我运行测试时,我会得到以下错误

代码语言:javascript
复制
System.NotImplementedException : No usable spatial provider could be found. In order to use the 'DbGeography' or 'DbGeometry' spatial types the EF provider being used must support spatial types and all prerequisites for the provider must be installed.

PS:我在测试中使用努力

任何建议都会有帮助的,谢谢。

编辑03/04/15:

错误是由于努力而产生的。它不支持空间属性DbGeography,我正在寻找一个解决方法,当我解决这个问题时,我会发布这个解决方法。

更多信息:https://effort.codeplex.com/discussions/471666

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 20:04:22

考虑到这种努力不支持像DbGeography和tamasflamich这样的特殊特性,这里

没有现有的支持(甚至没有测试版),我也不打算在短期内开始这项功能。抱歉的。

我也尝试使用Highway.Data,但两者都不支持。

它现在不支持,也永远不支持AdvancedQuery、AdvancedCommand或AdvancedScalar。

我浏览了我的代码,注意到我只需要在一个框中的位置,然后我决定停止使用DbGeography,并按我自己的方式进行,如下所示:

代码语言:javascript
复制
public class Place
{
  public int Id { get; set; }
  public string Name { get; set; }
  public double Lat { get; set; }
  public double Lng { get; set; }
}

而不是:

代码语言:javascript
复制
public IEnumerable<Church> GetInBox(DbGeography boundingBox)
{
  return All().Where(c => c.Location.Intersects(boundingBox));
}

现在我有了这个:

代码语言:javascript
复制
public IEnumerable<Church> GetInBox(DbGeography boundingBox)
{
  All().Where(c =>
            c.Lat <= nelt &&
            c.Lat >= swlt &&
            c.Lng <= nelng &&
            c.Lng >= swlng
            );
}

这解决了我的问题,但这将是伟大的努力和HighwayFramework支持空间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28764955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档