这两个对象在Microsoft SQL数据库中表示相同Geography数据类型的区别或预期目的是什么?
System.Data.Entity.Spatial.DbGeography
和
Microsoft.SqlServer.Types.SqlGeography
它们不能在彼此之间施放,但SqlGeography
在创建点,多边形等方面有额外的命令。
我认为System.Data.Entity
仅适用于实体框架,而Microsoft.SqlServer
仅供直接使用SqlCommand
时使用?
答案 0 :(得分:11)
你是对的,实质上就是那么简单。 DbGeography 只是 SqlGeography 的一个愚蠢版本,旨在在实体框架中工作。最流行的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());