CORRECTIF : Message d'erreur lorsque vous exécutez une requête «LINQ à entités» qui utilise un paramètre de chaîne ou un paramètre binaire sur une base de données SQL Server Compact 3.5: «les types de données ntext et image ne peut pas être utilisés dans WHERE, HAVING, GROUP BY, ON ou IN clauses "

Traductions disponibles Traductions disponibles
Numéro d'article: 958478 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit les éléments suivants concernant cette version de correctif :
  • Problèmes résolus par le package de correctifs
  • Les conditions préalables à l'installation du package de correctifs
  • Si vous devez redémarrer l'ordinateur après avoir installé le package de correctifs
  • Si le package de correctifs est remplacé par un autre package de correctifs
  • Si vous devez apportez des modifications du Registre
  • Les fichiers qui sont contenus dans le package de correctifs

Symptômes

Envisagez le scénario suivant. Une application utilise Microsoft ADO.NET Entity Framework inclus dans Microsoft .NET Framework 3.5 Service Pack 1 pour accéder à une base de données Microsoft SQL Server Compact 3.5. Dans l'application, vous exécutez une requête «LINQ à entités» qui utilise un paramètre de chaîne ou un paramètre binaire par rapport à la base de données. Dans ce scénario, vous recevez message d'erreur suivant lorsque vous exécutez l'application :
Les types de données ntext et image ne peut pas être utilisés dans WHERE, HAVING, GROUP BY, ON ou IN clauses, sauf lorsque ces types de données sont utilisés avec l'opérateur LIKE ou IS NULL prédicats.

Cause

Lorsque vous utilisez des paramètres pour une requête «LINQ à entités» dans une application, vous ne pouvez pas spécifier les types base de données de base. Le fournisseur SQL Server Compact Entity Framework tente de créer un paramètre au niveau du fournisseur selon les facettes EDM (Entity Data Model) du paramètre d'origine. SQL Server Compact ne prend pas en charge le type de données nvarchar (max) ou le type de données varbinary (max) . Par conséquent, lorsque le fournisseur choisit le type de données pour un paramètre du type de données edm.String ou du type de données edm.Binary , le fournisseur doit marquer le paramètre comme un des types données suivant basés sur les facettes EDM du paramètre :
  • Pour un paramètre de chaîne, le fournisseur permet de sélectionner le type de données de type nvarchar (4000) ou le type de données ntext .
  • Pour un paramètre binaire, le fournisseur permet de sélectionner le type de données varbinary(4000) ou le type de données image .
Si le fournisseur de marque le paramètre comme type de données de type nvarchar (4000) ou comme type de données varbinary(4000) , une erreur se produit lorsque vous essayez d'insérer des valeurs supérieures à 8 000 octets. En outre, si le fournisseur de marque le paramètre comme type de données ntext , ou comme type de données image , une erreur se produit si les opérations d'égalité, regroupement des opérations ou d'opérations de tri sont effectuées sur le paramètre.

Résolution

Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif est conçu pour corriger le problème décrit dans cet article. Appliquer ce correctif uniquement aux systèmes rencontrant le problème décrit dans cet article. Ce correctif va peut-être subir des tests. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contient ce correctif.

Si le correctif est disponible pour téléchargement, il existe une section «Téléchargement de correctif logiciel disponible» en haut de cet article de base de connaissances. Si cette section n'apparaît pas, contactez le service clientèle de Microsoft et de support pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si n'importe quelle résolution des problèmes sont requis, vous devrez peut-être créer une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux autres questions et problèmes qui ne relèvent pas de ce correctif spécifique. Pour obtenir une liste complète de numéros de téléphone Microsoft Services de support technique ou à créer une demande de service distincte, site Web Microsoft suivant :
http://support.microsoft.com/contactus/?ws=support
Remarque Le formulaire «Téléchargement de correctif logiciel disponible» affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, il est, car un correctif n'est pas disponible pour cette langue.

Conditions préalables

Pour appliquer ce correctif, vous devez désinstaller le précédemment installé SQL Server Compact 3.5 Service Pack 1 pour installer le fichier .msi est fourni avec ce correctif. Si vous ne désinstallez pas le précédemment installé SQL Server Compact 3.5 Service Pack 1, vous recevez un message d'erreur installation indiquant qu'une version ultérieure de SQL Server Compact est déjà installée. Pour plus d'informations sur SQL Server Compact 3.5 Service Pack 1, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
955965Description de SQL Server Compact 3.5 Service Pack 1

Redémarrez informations

Vous ne devez pas redémarrer l'ordinateur après avoir appliqué ce correctif.

Informations du Registre

Vous ne devrez pas modifier le Registre.

Informations sur le fichier du correctif

Ce correctif contient uniquement les fichiers requis pour résoudre les problèmes répertoriés dans cet article. Ce correctif ne doit contenir tous les fichiers nécessaires à entièrement mise à jour un produit vers la dernière version.

La version anglaise de ce correctif dispose les attributs de fichier (ou version ultérieure fichier) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers figurent en temps universel (UTC). Lorsque vous affichez les informations du fichier, il est converti en heure locale. Pour connaître la différence entre l'UTC et l'heure locale, utilisez l'onglet fuseau horaire de l'élément date et heure dans le Panneau de configuration.
Réduire ce tableauAgrandir ce tableau
Nom de fichierVersion du fichierTaille du fichierDateHeurePlate-forme
System.Data.SqlServerCe.Entity.dll3.5.5692.1230,48024-Sep-200806 : 46x 86 / x 64/IA-64
System.Data.SqlServerCe.dll3.5.5692.1271,44024-Sep-200806 : 46x 86 / x 64
Policy.3.5.System.Data.SqlServerCe.dll3.5.5692.113,39224-Sep-200806 : 46x 86 / x 64
Policy.3.5.System.Data.SqlServerCe.Entity.dll3.5.5692.113,39224-Sep-200806 : 46x 86 / x 64
Sqlceca35.dll3.5.5692.1343,10424-Sep-200808 : 07x 86
Sqlcecompact35.dll3.5.5692.184,54424-Sep-200808 : 07x 86
Sqlceer35en.dll3.5.5692.1148,03224-Sep-200808 : 07x 86
Sqlceme35.dll3.5.5692.165,08824-Sep-200808 : 07x 86
Sqlceoledb35.dll3.5.5692.1172,60824-Sep-200808 : 07x 86
Sqlceqp35.dll3.5.5692.1644,16024-Sep-200808 : 07x 86
Sqlcese35.dll3.5.5692.1348,22424-Sep-200808 : 07x 86

Statut

Microsoft a confirmé le que de ce problème dans les produits Microsoft répertoriés dans la section «S'applique à».

Plus d'informations

Après avoir appliqué ce correctif, le fournisseur de ne pas deviner le type de données d'un paramètre du type de données EDM.String ou du type de données EDM.Binary . Le processeur de requêtes sélectionne le type de données correct pour le paramètre en fonction de la valeur ou de la colonne à laquelle le paramètre est associée ou avec lequel le paramètre est utilisé.

Par exemple, dans la requête Entity SQL suivante, le processeur de requêtes sélectionne le type de données ntext pour le paramètre name avant d'appliquer ce correctif.
String name = "XYZ";
var q = from e in nwind.Employees
           where e.First_Name = name
           select e;
Après avoir appliqué ce correctif, le type de données de la colonne Prénom est sélectionné pour le paramètre name .

Toutefois, dans l'exemple suivant, la requête «LINQ à entité» échoue car le paramètre name n'est pas associée à ni utilisé avec n'importe quelle valeur ou la colonne.
String name = "XYZ";
var q = from e in nwind.Employees
           select name;
Ce correctif résout également un problème connu qui est décrite dans le document Lisezmoi pour SQL Server Compact 3.5. Pour plus d'informations, consultez la section «SQL Server Compact 3.5 SP1 Runtime problèmes pour le ADO.NET Entity Framework» du site Microsoft suivant :
http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htm
Ce correctif résout le problème est lié aux instructions Transact-SQL incorrectes qui sont générées lorsque le fournisseur convertit des sous-requêtes scalaires pour appliquer des constructions.

Remarque Sous-requêtes en corrélation sont convertis en sous-requêtes scalaires en interne. Les sous-requêtes de corrélation ne sont pas prises en charge dans cette version. Lorsque vous exécutez ces requêtes, vous recevez message d'erreur suivantes :
Erreur lors de l'exécution de la définition de commande. Consultez l'exception interne pour plus d'informations.
L'exception interne contient le message suivant :
Comportait une erreur d'analyse la requête. [.., Jeton erreur = AS]
La raison est que ADO.NET Entity Framework interprète la requête d'entrée comme une requête qui a le type de jointure CROSS APPLY ou le type de jointure OUTER APPLY. Si le côté droit de la condition de jointure renvoie une valeur scalaire, la jointure est convertie en une sous-requête scalaire. Le fournisseur ADO.NET Entity Framework pour SQL Server Compact doit convertir cette sous-requête scalaire une requête équivalente qui possède le type de jointure OUTER APPLY, qui est pris en charge par SQL Server Compact. Toutefois, dans cette version, cette conversion n'est pas effectuée correctement. Par exemple, une erreur se produit pour la requête suivante dans cette version.
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());
    }
}
Pour plus d'informations sur le schéma d'appellation des mises à jour SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
822499Nouveau schéma d'affectation de noms pour les packages de correctifs Microsoft SQL Server
Pour plus d'informations sur la terminologie mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
824684Description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft

Propriétés

Numéro d'article: 958478 - Dernière mise à jour: mardi 17 février 2009 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server Compact 3.5
Mots-clés : 
kbmt kbexpertiseadvanced kbfix kbautohotfix kbsurveynew kbqfe kbhotfixserver KB958478 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 958478
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com