2014-11-23 3 views
1

Я пытаюсь вставить DbGeography datatype в базу данных через ado.net, но я получаю ошибку. ошибка, я получаю:Как вставить параметр данных DbGeography в базу данных через ado.net

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

код, который я использую: Entity:

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

DB обновление:

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?

ответ

2

Это, вероятно, будет одной из двух вещей. Я не пытался напрямую посылать DbGeography к SQL через ADO.NET, но если вы можете, то вам необходимо установить дополнительные свойства на объекте SqlParameter, как это:

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

Если это все еще не работает, то вам необходимо преобразовать экземпляр DbGeography в SqlGeography. Для получения справки см. Мой предыдущий ответ SO here.

Смежные вопросы