摘要
本文會說明下列有關此 hotfix 版本︰
-
Hotfix 套件所修正的問題
-
安裝 hotfix 套件的先決條件
-
是否必須重新啟動電腦在安裝 hotfix 套件之後
-
是否 hotfix 套件會取代任何其他 hotfix 套件
-
您是否必須做的任何登錄變更
-
Hotfix 套件包含的檔案
狀況
請考慮下列案例。應用程式使用 Microsoft ADO.NET Entity Framework 隨附於 Microsoft.NET Framework 3.5 Service Pack 1 存取 Microsoft SQL Server Compact 3.5 資料庫中。在應用程式中,您可以執行 「 LINQ to Entities"查詢字串參數或二進位的參數對資料庫所使用。在這個案例中,您會收到下列錯誤訊息,當您執行應用程式︰
Ntext 與 image 資料型別不能用於何處、 HAVING 」、 「 群組依據],在或是在子句,除了類似搭配使用這些資料型別時,或為 NULL 的述詞。
原因
當您使用應用程式中的"LINQ to Entities 」 查詢的參數時,您無法指定基底的資料庫型別。SQL Server Compact Entity Framework 提供者會嘗試建立提供者層級的參數,根據原始參數的實體資料模型 (EDM) facet。SQL Server 壓縮不支援的nvarchar(max)資料型別或varbinary(max)的資料型別。因此,當提供者選取的資料型別參數的Edm.String資料型別或Edm.Binary的資料型別,提供者來標示參數做為其中一個根據 EDM facet 參數的下列資料類型有︰
-
字串參數,提供者選取nvarchar(4000)資料型別或ntext資料型別。
-
二進位的參數,提供者,請選取varbinary(4000)資料型別或image資料型別。
如果提供者將標示為nvarchar(4000)的資料型別,或為varbinary(4000)的資料型別參數,當您嘗試插入大於 8000 個位元組的值時,也會發生錯誤。 此外,如果提供者將標示為ntext資料型別或image資料型別參數,如果執行任何的等號比較作業、 分組作業中或排序作業的參數就會發生錯誤。
解決方案
Hotfix 資訊
支援的 hotfix 可從 Microsoft 取得。不過,此 Hotfix 僅用於修正本文中所述的問題。此 hotfix 只適用於發生本文所述之問題的系統。此 hotfix 可能會接受其他測試。因此,如果此問題的影響不會很嚴重,我們建議您等候含此 hotfix 的下一版軟體更新。
如果 hotfix 可供下載,在此知識庫文件頂端將出現「可用的 Hotfix」區段。如果這個區段沒有出現,請連絡 Microsoft 客戶服務及支援以取得 hotfix。 注意如果發生其他問題,或如果需要進行疑難排解,您可能必須建立個別的服務要求。收取支援費用會套用到其他支援問題和此特定 hotfix 無法解決的問題。如 Microsoft 客戶服務及支援的電話號碼或建立個別的服務要求的完整清單,請造訪下列 Microsoft 網站︰http://support.microsoft.com/contactus/?ws=support注意「 下載 Hotfix 」 表單會顯示 hotfix 可用的語言。如果看不到您的語言,是因為未提供該語言的 Hotfix 。
先決條件
若要套用此 hotfix,您必須解除安裝先前安裝的 SQL Server Compact 3.5 Service Pack 1 以安裝此 hotfix 提供.msi 檔案。如果您不是先前安裝的 SQL Server Compact 3.5 Service Pack 1 的解除安裝,您會收到安裝錯誤訊息,指出已安裝 [較新版的 SQL Server 壓縮。如需有關 SQL Server Compact 3.5 Service Pack 1 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文︰
SQL Server Compact 3.5 Service Pack 1 的955965描述
重新啟動資訊
您不必套用此 hotfix 之後,重新啟動電腦。
登錄資訊
您沒有變更登錄。
Hotfix 檔案資訊
此 hotfix 只包含這些檔案所需來修正本文所列的問題。此 hotfix 並未包含您必須將產品完整更新至最新版組建的所有檔案。
此 hotfix 的英文版具有下列表格中所列檔案屬性 (或較新的檔案屬性)。這些檔案的日期和時間會以國際標準時間 (UTC) 格式列出。當您檢視檔案資訊時,會將它轉換為本地時間。若要查看 UTC 與當地時間的時差,請在 [控制台] 中的日期和時間項目使用 [時區] 索引標籤。
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
時間 |
平台 |
---|---|---|---|---|---|
System.data.sqlserverce.entity.dll |
3.5.5692.1 |
230,480 |
24-Sep-2008 |
06:46 |
x86/x64/IA-64 |
System.data.sqlserverce.dll |
3.5.5692.1 |
271,440 |
24-Sep-2008 |
06:46 |
x86/x64 |
Policy.3.5.system.data.sqlserverce.dll |
3.5.5692.1 |
13,392 |
24-Sep-2008 |
06:46 |
x86/x64 |
Policy.3.5.system.data.sqlserverce.entity.dll |
3.5.5692.1 |
13,392 |
24-Sep-2008 |
06:46 |
x86/x64 |
Sqlceca35.dll |
3.5.5692.1 |
343,104 |
24-Sep-2008 |
08:07 |
x86 |
Sqlcecompact35.dll |
3.5.5692.1 |
84,544 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceer35en.dll |
3.5.5692.1 |
148,032 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceme35.dll |
3.5.5692.1 |
65,088 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceoledb35.dll |
3.5.5692.1 |
172,608 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceqp35.dll |
3.5.5692.1 |
644,160 |
24-Sep-2008 |
08:07 |
x86 |
Sqlcese35.dll |
3.5.5692.1 |
348,224 |
24-Sep-2008 |
08:07 |
x86 |
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
更多的資訊
您套用此 hotfix 之後,提供者不會猜測的資料型別參數的EDM。字串的資料型別或EDM。二進位資料型別。查詢處理器會選取正確的資料型別參數根據值或資料行相等的參數,或與使用的參數。
例如,在下列的實體 SQL 查詢中,查詢處理器選取ntext資料型別名稱參數在套用此 hotfix 之前。String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name select e;
您套用此 hotfix 之後,名稱參數選取 [ First_Name ] 資料行的資料型別。
不過,在下列範例中,「 LINQ 以實體 」 查詢失敗,因為名稱參數不相等,也不搭配任何其他值或資料行。String name = "XYZ";var q = from e in nwind.Employees
select name;
此 hotfix 也解決已知的問題所述的 SQL Server Compact 3.5 讀我文件。 如需詳細資訊,請參閱 「 SQL Server Compact 3.5 SP1 執行階段問題的 ADO.NET Entity Framework 」 一節的下列 Microsoft 網站︰
http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htm此 hotfix 可以解決問題相關的提供者將轉換套用建構的數值類子查詢時,會產生不正確考慮改用 SQL 陳述式。 注意相關子查詢會在內部轉換成純量的子查詢。此版本中不支援相關的子查詢。當您執行這些查詢時,您會收到下列錯誤訊息︰
執行命令定義時發生錯誤。請參閱內部例外狀況,如需詳細資訊。
內部例外狀況包含下列訊息︰
正在剖析查詢時發生錯誤。[..,語彙基元,錯誤 = AS]
原因是 ADO.NET Entity Framework 會將輸入的查詢解譯成已 CROSS APPLY 聯結型別或外部套用的聯結類型的查詢。如果聯結條件的右邊則會傳回純量值,聯結會轉換成純量子查詢中。SQL Server 壓縮的 ADO.NET Entity Framework 提供者,就必須將該純量子查詢轉換為相等的查詢,有套用的外部聯結類型,SQL Server Compact 支援。不過,在此版本中,這種轉換不照著做。例如,下列查詢,此版本中發生錯誤。
C# Sample Application:using (NorthwindEntities nwEntities = new NorthwindEntities())
{ var orders = nwEntities.Employees .Select(employee => employee.Orders.Max(order => order.Order_ID)); foreach (var order in orders) { Console.WriteLine(order.ToString()); } }
如需有關 SQL Server 更新的命名結構描述的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
822499新命名的結構描述的 Microsoft SQL Server 軟體更新套件 如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
用來描述 Microsoft 軟體更新標準術語的編號 824684描述