2015-06-02 157 views
0

這是一個奇怪的。我試圖通過MVC控制器將Google地圖中的多邊形保存到MS SQL中。問題是,我第一次做到這一點,它的工作原理,第二次它給我的錯誤:SQL DBGeography第二次插入失敗

The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 3 ("@2"): The supplied value is not a valid instance of data type geography. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision. 

我使用的EntityFramework 6.1.3,代碼第一。下面的提交線出現錯誤:

var newPoly = new GenericPolygon() 
       { 
        Name = webShape.Name, 
        PolyShape = shapePolygon, 
        IsEnabled = true, 
        IsDeleted = false 
       }; 
       _unitOfWork.PolygonRepository.Add(newPoly); 
       _unitOfWork.Commit(); 

的SQL表結構相同,不同之處在於它具有一個int ID標識列,以及類,該名稱是一個varchar(255)。 PolyShape列屬於地理類型。

的shapePolygon變量的定義如下,與類添加只讀屬性稱爲「LongLat」,這是用於從谷歌的LatLong切換到MS LongLat格式:

var shapePolygon = DbGeography.PolygonFromText("POLYGON((" + webShape.LongLat + "))", 4326); 

的犯線本身調用數據庫上下文保存方法(我使用UOW模式以減少代碼):

this.context.SaveChanges(); 

我不能爲我的生命弄清楚爲什麼它的工作原理一次,然後不再,除非我重新啓動VS(在服務器上運行帶有IIS Express - SQL 2008 R2 Enterprise的VS 2013) R)。

任何幫助或指針將:-)

回答

0

理解我似乎已經縮小的問題,並且同時它更是一個解決辦法比的答案,這可能幫助別人。

問題是SQL Server的版本,即SQL 2008 R2 10.50.4000。我將數據庫遷移到SQL Server 2012 build 11.0.5058,之後每次都運行代碼。

希望這可以幫助別人!