2011-04-18 63 views
2

我已經開發了使用EF4和SQL Server 2005我的網站,但移動到臨時站點時,事實證明,他們使用SQL Server 2000EF4與SQL Server 2000中

現在我得到這個錯誤,我相信有關的SQL Server 2000:

Incorrect syntax near '('. 'row_number' is not a recognized function name. 

是否有解決這個的一種方式?

感謝

+0

我只是做了同樣的事情,是要問同一問題的工作。現在我正在考慮不得不完全重新編碼我的數據層。 – 2011-04-19 14:42:53

+0

你能不能給我們關於你正在運行,使我們可以嘗試拿出一個替代查詢不使用ROW_NUMBER函數查詢更多信息? – imdondo 2011-04-18 13:21:54

+0

這是EF4創建查詢... – user441365 2011-04-18 13:24:03

回答

0

ROW_NUMBER()返回序列號的每一行返回。你在調用Row_number(),還是實體框架?

無論哪種方式,你可以寫一個用戶定義函數重新實現ROW_NUMBER。這裏的Stackoverflow發佈: ROW_NUMBER Alternative for SQL Server 2000

不知道這是否會在長期內做任何好事;你可能會發現你解決這個問題只得到碰到下一個原因,EF不能在SQL 2000年的工作,但,它可能是值得的幾分鐘嘗試。

+0

它是創建查詢的EF4 – user441365 2011-04-18 15:33:24

1

我遇到相同問題,併爲每個評論/我幾乎放棄它彈到客戶端上的StackOverflow迴應他們的數據庫升級到> 2000版。不幸的是,由於許多其他問題,這是不可能的。我不得不去谷歌上搜索周圍的解決方案,從什麼地方我發現了一個變通。

這就是我所做的。

  • 右鍵點擊ModelName.EDMX文件 - >打開方式
  • 選擇XML(文本)編輯器
  • 找到ProviderManifestToken = 「2005」,並與 ProviderManifestToken取而代之= 「2000」
  • 發佈時間改變和瞧!

現在的原因,我說這是一個變通(不是一個解決方案)是因爲

  1. 如果再次更新從數據庫模型,並開發 機數據庫> = 2000 (這很可能是作爲SQL的情況 2000連接未在所有由MS根據this article支持)在XML這個值將改變自動

  2. 此外,這種變化後由EF產生的查詢已在工作 我的情況,但我不能保證你的應用程序生成的所有查詢以往 將沒有任何問題