如何通过ado.net将DbGeography数据参数插入数据库

时间:2014-11-23 21:00:30

标签: c# sql-server ado.net geospatial spatial

我试图通过 ado.net 在数据库中插入DbGeography数据类型,但是我收到了错误消息。 我得到的错误是:

Additional information: No mapping exists from object type System.Data.Entity.Spatial.DbGeography to a known managed provider native type.

我使用的代码: 实体:

public class Position{...
public DbGeography Coordinates { get; set; }
...

数据库更新:

position.Coordinates = DbGeography.FromText(string.Format("POINT({0} {1})", _longitude, _latitude));
...
cmd.CommandText = @"UPDATE Positions SET [Coordinates] = @Coordinates WHERE PositionId = 1";
cmd.Parameters.Add(new SqlParameter("@Coordinates", store.Coordinates));

插入DbGeography类型的方法是什么?

1 个答案:

答案 0 :(得分:2)

这可能是两件事之一。我没有尝试通过ADO.NET直接将DbGeography发送到SQL,但如果可以,则需要在SqlParameter对象上设置其他属性,如下所示:

SqlParameter p = new SqlParameter();
p.Name = "@Coordinates";
p.Value = store.Coordinates;
p.SqlDbType = SqlDbType.Udt;
p.UdtTypeName = "geography";

如果仍然无效,则需要将DbGeography实例转换为SqlGeography。如需帮助,请参阅我之前的SO回答here