这两个对象在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());