一些背景:處理SQL Server 2012表中的空間數據類型
我在兩個不同的VM上運行兩個不同的SQL Server安裝。我試圖從我的代碼(它是爲SQL Server 2008 R2編寫的)連接到它們。我目前的.NET框架版本是4.0。我的Microsoft SQL Server 2008 R2安裝正在運行爲其設計的AdventureWorks,而我的SQL Server 2012 Express安裝正在運行較新的AdventureWorks2012數據庫。我正在查詢Person.Address。
目前我遇到了一個異常說「數據類型不能爲空」。我從看這個問題來自於SQL Server 2012中返回一個
Microsoft.SqlServer.Types.SqlGeography
數據類型返回的模式推出。看起來Type.GetType不能將其轉換爲可用並引發異常。我感到寬慰的是,這並不是我所做的,但我也感到困惑,因爲這個代碼應該普遍適用。請記住,此代碼在SQL Server 2008 R2上完美運行(因爲它缺少空間數據類型)。
我可以想出100個不好的方法來處理這個問題。不過,我想找你們提供建議。將.NET升級到4.5可以改善這種情況嗎?我是否必須更改我的代碼以適應新的數據類型?如果我的應用程序不處理它們,我應該擔心空間數據類型嗎?我該如何處理這個問題,因爲顯然SqlClient和Type.GetType在這方面做得不好。
謝謝!
假設你正在使用LINQ to SQL,這是一個可能重複[是否有可能使用SqlGeography與LINQ to SQL的?](http://stackoverflow.com/questions/2845767/is-它 - 可能使用sqlgeography-with-linq-to-sql) – Pondlife
@Pondlife - 錯誤消息不匹配。此外,擬議的副本正在處理一個非常具體的情況,將地理轉換爲varbinary。我在這裏看不到發生這種情況。 – JDB
這就是爲什麼它是一個「可能的」重複:)但另一方面,基本問題似乎是您的.NET 4.0代碼不支持SqlGeography,這也是其他問題中描述的基本問題 – Pondlife