我试图通过 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类型的方法是什么?
答案 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。