Excepción del proveedor de DbGeography espacial con Effort.EF6 [No se pudo encontrar un proveedor espacial utilizable]

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

Pregunta

Estoy desarrollando una aplicación con EF6 y decidí usar System.Data.Entity.Spatial.DbGeography para mis ubicaciones de la siguiente manera

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

Cuando ejecuto mis pruebas me sale el siguiente error

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.

PD: estoy usando Esfuerzo para mis pruebas.

Cualquier sugerencia sería útil, gracias.


Editado el 03/04/15:

El error es con Esfuerzo. No admite propiedades espaciales [DbGeography] Estoy buscando una solución que publicaré cuando resolviera el problema.

Más información: https://effort.codeplex.com/discussions/471666

Respuesta aceptada

Dado que Effort no admite propiedades especiales como DbGeography y tamasflamich dice aquí :

No hay soporte existente (ni siquiera beta) y no planeo comenzar a trabajar en esta característica en el corto plazo. Lo siento.

También intenté usar Highway.Data pero no es compatible con ninguno.

Ahora no lo hace, ni tampoco admitirá AdvancedQuery, AdvancedCommand o AdvancedScalar.

Recorrí mi código y noté que solo necesito las ubicaciones dentro de una caja, luego decidí dejar de usar DbGeography y hacerlo por mi cuenta, de la siguiente manera:

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

En lugar de:

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

Ahora tengo esto:

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

Esto resolvió mi problema, pero sería genial que Effort y HighwayFramework sean compatibles con Spatial.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué