Исключение провайдера Spatial DbGeography Provider с Effort.EF6 [Нет доступного пространственного провайдера.]

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:

Ошибка связана с усилием. Он не поддерживает пространственные свойства [DbGeography] Я ищу обходное решение, которое я опубликую, когда решит проблему.

Дополнительная информация: https://effort.codeplex.com/discussions/471666

Принятый ответ

Учитывая, что Effort не поддерживает специальные свойства, такие как DbGeography и tamasflamich, говорит здесь :

Нет существующей поддержки (даже не бета-версии), и я не собираюсь приступать к работе над этой функцией в ближайшее время. Сожалею.

Я также пытался использовать 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 будет пространственной.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему