系統開發時是利用 SQL 2005 Express,在開發環境一切正常,可是移植到伺服機,每執行到
.FirstOrDefault()
就出錯,利用 SQL Profiler 查看,原來轉出來的的語法為:
Select TOP (1) ....
TOP (1) 在 SQL 2005/2008 是可被接受的語法,可是在 SQL 2000 卻語法錯誤!!!!
原來在 .edmx 中的 SSDL 區段內有一處可以指定轉譯成 SQL 敘述的版本「ProviderManifestToken」,其值即對應到 SQL Server 的版本(2000/2005/2008)
<!-- SSDL content -->
<edmx:StorageModels>
<Schema Namespace="LoginUserModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2000" ...
這樣做只能解決「一時之急」,萬一有個語法"一定"要 2005 以上,怎麼辦?
回覆刪除如果都是使用 Express 版本,還是建議全部同步升級至最新版。原本在 2000 Express 的 SQL語法,都能正常在 2005/2008 Express 執行。
感謝建議!
回覆刪除是的,有比較好的環境、工具,本就該考慮升級,只是舊有的包袱一時無法拋棄