Effort.EF6を使用したSpatial DbGeography Provider例外[使用可能な空間プロバイダが見つかりませんでした]

asp.net-mvc c# effort entity-framework-6 spatial

質問

私はEF6でアプリケーションを開発しており、次のように自分の場所にSystem.Data.Entity.Spatial.DbGeographyを使用することに決めました

public class Place
{
  public int Id { get; set; }
  public string Name { get; set; }
  public DbGeography Location { get; set; }
} 

テストを実行すると、次のエラーが表示されます

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:

エラーはEffortです。空間プロパティをサポートしていません[DbGeography]私は問題を解決したときに投稿する回避策を探しています。

詳細情報: https : //effort.codeplex.com/discussions/471666

受け入れられた回答

tamasflamichが言うDbGeographyなど特殊なプロパティをサポートしていないよう努力を考えると、ここで

既存のサポートはありません(ベータ版でもありません)。すぐにこの機能について作業を開始するつもりはありません。ごめんなさい。

私もHighway.Dataを使用しようとしましたが、どちらもサポートしていません。

これは、AdvancedQuery、AdvancedCommand、またはAdvancedScalarを現在もサポートしていません。

私は自分のコードを歩いて、ボックスの中だけの場所が必要であることに気付きました。そして、私はDbGeographyの使用をやめ、私自身で次のようにしました。

public class Place
{
  public int Id { get; set; }
  public string Name { get; set; }
  public double Lat { get; set; }
  public double Lng { get; set; }
}

の代わりに:

public IEnumerable<Church> GetInBox(DbGeography boundingBox)
{
  return All().Where(c => c.Location.Intersects(boundingBox));
}

今私はこれを持っています:

public IEnumerable<Church> GetInBox(DbGeography boundingBox)
{
  All().Where(c =>
            c.Lat <= nelt &&
            c.Lat >= swlt &&
            c.Lng <= nelng &&
            c.Lng >= swlng
            );
}

これは私の問題を解決しましたが、EffortとHighwayFrameworkが空間をサポートすることは素晴らしいことでしょう。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ