我正在使用DotNetNuke 7平臺構建應用程序,並試圖將Geography數據寫入數據庫。以下是該項目的一些背景。我在VS 2012中構建,剛剛從2008 R2升級到Server 2012。 DotNetNuke 7爲數據層和WebAPI實現了PetaPoco。不存在從對象類型System.Data.Spatial.DbGeography到已知託管提供程序本機類型的映射
希望我提供的信息足以瞭解問題。我的代碼在行「rep.Insert(location);」
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.Web;
using System.Net.Http;
using System.Web.Http;
using System.Data.Spatial;
using DotNetNuke.Web.Api;
using DotNetNuke.Data;
namespace DotNetNuke.Modules.GeoLocations
{
public class LocationController: DnnApiController
{
[AllowAnonymous]
[HttpPost]
[ValidateAntiForgeryToken]
public HttpResponseMessage addLocation(CP_Location submitted)
{
submitted.GeoCode = DbGeography.PointFromText(string.Format("POINT({0} {1})", submitted.Long, submitted.Lat), 4326);
createLocation(submitted);
return Request.CreateResponse(HttpStatusCode.OK, "Success");
}
//------------------------------CRUD------------------------------//
public void createLocation(CP_Location location)
{
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<CP_Location>();
rep.Insert(location);
}
}
}
}
這是我的目標
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Spatial;
using System.Data.Entity;
using DotNetNuke.ComponentModel.DataAnnotations;
using DotNetNuke.Data;
using DotNetNuke.Data.PetaPoco;
namespace DotNetNuke.Modules.GeoLocations
{
[TableName("CP_Locations")]
[PrimaryKey("LocationId", AutoIncrement = true)]
public class CP_Location
{
public int LocationId { get; set; }
public string LocationType { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public float Long { get; set; }
public float Lat { get; set; }
public DbGeography GeoCode { get; set; }
}
}
我在長和緯度通過從一個谷歌地圖,從獲取鼠標座標中的客戶端點擊
在我的數據庫中,如果我將直接編寫插入或更新使用以下,它將工作。
geography:: STGeomFromText('POINT(-121.527200 45.712113)' , 4326);
可能是什麼原因?
- 儘管我會包括對象
能否請您提供完整的異常詳細信息(包括堆棧跟蹤)的答案,正如它的toString()方法返回? – 2013-09-26 13:05:32