Riepilogo
In questo articolo vengono descritti i seguenti aspetti dell'hotfix:
-
I problemi risolti dal pacchetto di hotfix
-
Prerequisiti per l'installazione del pacchetto hotfix
-
Se è necessario riavviare il computer dopo l'installazione del pacchetto hotfix
-
Se il pacchetto di hotfix è sostituito da un altro pacchetto
-
Se è necessario apportare le modifiche del Registro di sistema
-
I file contenuti nel pacchetto di hotfix
Sintomi
Si consideri il seguente scenario. Un'applicazione utilizza Microsoft ADO.NET Entity Framework incluso in Microsoft.NET Framework 3.5 Service Pack 1 per accedere a un database di Microsoft SQL Server Compact 3.5. Nell'applicazione, si esegue una query "LINQ to Entities" che utilizza un parametro di stringa o un parametro binario nel database. In questo scenario, viene visualizzato il seguente messaggio di errore quando si esegue l'applicazione:
Impossibile utilizzare i tipi di dati ntext e image in WHERE, HAVING, GROUP BY, nella o nelle clausole, tranne quando questi tipi di dati vengono utilizzati con simili o predicati NULL.
Causa
Quando si utilizzano i parametri per una query "LINQ to Entities" in un'applicazione, è possibile specificare i tipi di database di base. Il provider SQL Server Compact Entity Framework tenta di creare un parametro a livello di provider in base alle sfaccettature Entity Data Model (EDM) del parametro originale. SQL Server Compact non supporta il tipo di dati nvarchar (max) o il tipo di dati varbinary (max) . Pertanto, quando il provider seleziona il tipo di dati per un parametro del tipo di dati Edm.String o Edm.Binary tipo di dati, il provider ha il parametro sia contrassegnato come uno dei seguenti tipi di dati in base alle sfaccettature EDM del parametro:
-
Per un parametro di stringa, il provider seleziona il tipo di dati nvarchar (4000) o il tipo di dati ntext .
-
Per un parametro di tipo binario, il provider seleziona il tipo di dati varbinary(4000) o il tipo di dati di immagine .
Se il provider contrassegna il parametro come tipo di dati nvarchar (4000) o come tipo di dati varbinary(4000) , si verifica un errore quando si tenta di inserire i valori maggiori di 8.000 byte. Inoltre, se il provider contrassegna il parametro come tipo di dati ntext o come tipo di dati di immagine , verrà generato un errore se vengono eseguite le operazioni di uguaglianza, operazioni di raggruppamento o operazioni di ordinamento sul parametro.
Risoluzione
Informazioni sull'hotfix
Un hotfix supportato è disponibile da Microsoft. Tuttavia, questo hotfix è destinato esclusivamente alla correzione del problema descritto in questo articolo. Applicare questo hotfix solo ai sistemi in cui si verifica il problema descritto in questo articolo. Questo hotfix potrebbe essere sottoposto ad ulteriori test. Se il problema non causa gravi difficoltà, si consiglia di attendere il successivo aggiornamento software contenente tale hotfix.
Se l'hotfix è disponibile per il download, è presente una sezione "Hotfix disponibile per il download" all'inizio di questo articolo della Knowledge Base. Se questa sezione non viene visualizzata, contattare il servizio clienti Microsoft e supporto tecnico per ottenere l'hotfix.
Nota: Se si verificano ulteriori problemi o se è necessaria attività di risoluzione aggiuntiva, potrebbe essere necessario creare una richiesta di assistenza separata. I costi di supporto normale verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare specifico hotfix in questione. Per un elenco completo dei numeri di telefono del servizio clienti Microsoft e supporto tecnico o per creare una richiesta di assistenza separata, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota: Il modulo "Hotfix disponibile per il download" Visualizza le lingue per cui è disponibile l'hotfix. Se non viene visualizzata la lingua, è perché un aggiornamento rapido non è disponibile per tale lingua.
Prerequisiti
Per applicare questo hotfix, è necessario disinstallare il precedentemente installato SQL Server Compact 3.5 Service Pack 1 per installare il file MSI fornito con questo hotfix. Se non si disinstalla il precedentemente installato SQL Server Compact 3.5 Service Pack 1, viene visualizzato un messaggio di errore di installazione che informa che è già installata una versione successiva di SQL Server Compact. Per ulteriori informazioni su SQL Server Compact 3.5 Service Pack 1, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
Descrizione di 955965 di SQL Server Compact 3.5 Service Pack 1
Informazioni sul riavvio
Non è necessario riavviare il computer dopo avere applicato questo hotfix.
Informazioni del Registro di sistema
Non è necessario modificare il Registro di sistema.
Informazioni sui file
Questo hotfix contiene solo i file necessari per correggere i problemi elencati in questo articolo. Questo hotfix potrebbe non contenere tutti i file necessari per aggiornare completamente un prodotto all'ultima build.
La versione inglese di questo hotfix presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e ore dei file sono elencate in base al formato UTC (Coordinated Universal Time Coordinated). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e ora locale, utilizzare la scheda fuso orario nell'elemento di Data e ora nel Pannello di controllo.
Nome del file |
Versione del file |
Dimensione del file |
Data |
Ora |
Piattaforma |
---|---|---|---|---|---|
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 |
Stato
Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".
Ulteriori informazioni
Dopo avere applicato questo hotfix, il provider non indovinare il tipo di dati per un parametro di di EDM. Stringa tipo di dati o di di EDM. Binario tipo di dati. Seleziona il tipo di dati corretto per il parametro basato sul valore o sulla colonna in cui il parametro è equivalente o con cui viene utilizzato il parametro.
Ad esempio, nella seguente query Entity SQL, query processor consente di selezionare il tipo di dati ntext per il parametro name prima di applicare questo hotfix.
String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;
Dopo avere applicato questo hotfix, è selezionato il tipo di dati della colonna nome per il parametro name .
Tuttavia, nell'esempio seguente, la query "LINQ a entità" ha esito negativo poiché il parametro name viene utilizzato con qualsiasi altro valore o una colonna né equivale a.
String name = "XYZ";var q = from e in nwind.Employees
select name;
Questo hotfix risolve anche un problema noto che è descritta nel documento Leggimi per SQL Server Compact 3.5. Per ulteriori informazioni, vedere la sezione "SQL Server Compact 3.5 SP1 Runtime problemi for the ADO.NET Entity Framework" del seguente sito Web Microsoft:
http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmQuesto hotfix risolve il problema correlato alla corrette istruzioni Transact-SQL che vengono generate quando il provider converte subquery scalari applicare costrutti.
Nota: Le subquery correlate vengono convertite internamente in subquery scalari. La subquery non sono supportate in questa versione. Quando si eseguono tali query, viene visualizzato il seguente messaggio di errore:
Si è verificato un errore durante l'esecuzione di definizione dei comandi. L'eccezione interna per informazioni dettagliate, vedere.
L'eccezione interna contiene il seguente messaggio:
Si è verificato un errore di analisi della query. [..., Il token in errore = AS]
Il motivo è che ADO.NET Entity Framework query di input viene interpretato come una query che ha il tipo di join CROSS APPLY o il tipo di join OUTER APPLY. Se il lato destro della condizione di join restituisce un valore scalare, il join viene convertito in una subquery scalare. Il provider ADO.NET Entity Framework per SQL Server Compact deve convertire tale subquery scalare in una query equivalente con il tipo di join OUTER APPLY, supportato da SQL Server Compact. Tuttavia, in questa versione, questa conversione non viene eseguita correttamente. Ad esempio, si verifica un errore per la query riportata di seguito in questa versione.
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());
}
}
Per ulteriori informazioni sullo schema di denominazione per gli aggiornamenti di SQL Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
I pacchetti di aggiornamento 822499 nuovo schema di denominazione per il software di Microsoft SQL Server
Per ulteriori informazioni sulla terminologia degli aggiornamenti software, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
824684 descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft