Exception de fournisseur DbGeography spatiale avec Effort.EF6 [Aucun fournisseur spatial utilisable n'a pu être trouvé.]

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

Question

Je développe une application avec EF6 et j'ai décidé d'utiliser System.Data.Entity.Spatial.DbGeography pour mes emplacements comme suit

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

Lorsque je lance mes tests, j'obtiens l'erreur suivante

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: J'utilise Effort pour mes tests.

Toute suggestion serait utile, merci.


Édité le 03/04/15:

L'erreur est avec effort. Il ne prend pas en charge les propriétés spatiales [DbGeography] Je recherche une solution de contournement que je publierai une fois le problème résolu.

Plus d'infos: https://effort.codeplex.com/discussions/471666

Réponse acceptée

Étant donné qu'Effort ne prend pas en charge des propriétés spéciales telles que DbGeography et tamasflamich, dit ici :

Il n'y a pas de support existant (pas même la version bêta) et je ne prévois pas de commencer à travailler sur cette fonctionnalité de si tôt. Pardon.

J'ai aussi essayé d'utiliser Highway.Data mais cela ne prend pas en charge non plus.

À l'heure actuelle, il ne prend pas en charge ni AdvancedQuery, AdvancedCommand, ou AdvancedScalar.

J'ai parcouru mon code et remarqué que je n'avais besoin que des emplacements à l'intérieur d'une boîte, puis j'ai décidé de cesser d'utiliser DbGeography et de le faire moi-même, comme suit:

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

Au lieu de:

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

Maintenant j'ai ceci:

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

Cela résout mon problème, mais ce serait formidable que Effort et HighwayFramework prennent en charge l’espace.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi