Entity Framework: SqlGeography vs DbGeography

Quelle est la différence, ou l'intention de ces deux objects qui représentent le même type de données Géographie dans une database Microsoft SQL?

System.Data.Entity.Spatial.DbGeography 

et

 Microsoft.SqlServer.Types.SqlGeography 

Ils ne peuvent pas être moulés entre eux, mais SqlGeography a une command supplémentaire quand il s'agit de créer des points, des polygones, etc.

Je pense que System.Data.Entity doit être utilisé avec Entity Framework uniquement, alors que Microsoft.SqlServer est utilisé pour utiliser directement SqlCommand ?

Vous avez raison, en substance, c'est aussi simple que cela. DbGeography est juste une version simplifiée de SqlGeography , conçue pour fonctionner au sein d' Entity Framework . Les methods les plus populaires de SqlGeography ont été mises en œuvre en son sein mais comme vous l'avez souligné à juste titre, pas toutes.

Alors que les deux types ne peuvent pas être directement transposés entre eux, le process de conversion est relativement simple dans les périodes où la fonctionnalité supplémentaire de SqlGeography est requirejse.

Par exemple:

 SqlGeography geog1 = SqlGeography.STPolyFromText('<coords>', srid); SqlGeography geog2; DbGeography dbGeog; // SqlGeography to DbGeography dbGeog = DbGeography.FromText(geog1.ToSsortingng(), srid); // DbGeography to SqlGeography geog2 = SqlGeography.Parse(dbGeog.AsText());