这两个对象在Microsoft SQL数据库中代表相同的Geography数据类型有什么区别或预期目的?

System.Data.Entity.Spatial.DbGeography


Microsoft.SqlServer.Types.SqlGeography

它们不能在彼此之间强制转换,但是SqlGeography在创建点,多边形等时还有其他命令。

我在想System.Data.Entity仅用于Entity Framework,而Microsoft.SqlServer仅在直接使用SqlCommand时使用?

最佳答案

没错,本质上就是这么简单。 DbGeography 是Sqltography 的简化版,旨在在 Entity Framework 中使用。 SqlGeography中最流行的方法已在其中实现,但正如您正确指出的那样,并不是全部。

虽然这两种类型不能直接在彼此之间强制转换,但是在需要 SqlGeography 的附加功能的时候,转换它们的过程相对简单。

例如:

SqlGeography geog1 = SqlGeography.STPolyFromText('<coords>', srid);
SqlGeography geog2;
DbGeography dbGeog;

// SqlGeography to DbGeography
dbGeog = DbGeography.FromText(geog1.ToString(), srid);
// DbGeography to SqlGeography
geog2 = SqlGeography.Parse(dbGeog.AsText());

08-19 12:51