CORRECÇÃO: Mensagem de erro quando executa uma consulta de "LINQ para entidades" que utiliza um parâmetro de cadeia ou um parâmetro binário com uma base de dados SQL Server 3.5 compactar: "não não possível utilizar os tipos de dados ntext e imagem WHERE, HAVING, GROUP BY, ON ou IN cláusulas"

Traduções de Artigos Traduções de Artigos
Artigo: 958478 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo descreve o seguinte sobre esta versão de correcção:
  • Problemas corrigidos pelo pacote de correcção
  • Pré-requisitos para instalar o pacote de correcções
  • Se tem de reiniciar o computador depois de instalar o pacote de correcção
  • Se o pacote de correcções é substituído por qualquer outro pacote de correcção
  • Se terá de efectuar quaisquer alterações de registo
  • Ficheiros contidos no pacote de correcção

Sintomas

Considere o seguinte cenário. Uma aplicação utiliza o Microsoft ADO.NET entidade Framework incluído no Microsoft .NET Framework 3.5 Service Pack 1 para aceder a uma base de dados Microsoft SQL Server Compact 3.5. Na aplicação, executar uma consulta "LINQ para entidades" que utiliza um parâmetro de cadeia ou um parâmetro binário em relação à base de dados. Neste cenário, recebe a seguinte mensagem de erro quando executar a aplicação:
Os tipos de dados ntext e imagem não podem ser utilizados no WHERE, HAVING, GROUP BY, ON ou IN cláusulas, excepto quando estes tipos de dados são utilizados com o LIKE ou IS NULL predicados.

Causa

Quando utilizar parâmetros para uma consulta de "LINQ para entidades" numa aplicação, não pode especificar os tipos de base de dados base. O fornecedor do SQL Server Compact entidade Framework tenta criar um parâmetro de nível de fornecedor com base nos aspectos modelo de dados de entidade (EDM) do parâmetro original. SQL Server Compact não suporta o tipo de dados nvarchar(max) ou o tipo de dados varbinary(max) . Por conseguinte, quando o fornecedor de selecciona o tipo de dados de um parâmetro do tipo de dados edm.String ou do tipo de dados edm.Binary , o fornecedor tem de marcar o parâmetro como um dos seguintes tipos de dados baseado as EDM facetas do parâmetro:
  • Um parâmetro de cadeia, o fornecedor selecciona o tipo de dados nvarchar(4000) ou o tipo de dados ntext .
  • Um parâmetro binário, o fornecedor selecciona o tipo de dados varbinary(4000) ou o tipo de dados de imagem .
Se o fornecedor de marcar o parâmetro como o tipo de dados nvarchar(4000) ou como o tipo de dados varbinary(4000) , ocorre um erro quando tenta inserir valores com mais de 8.000 bytes. Além disso, se o fornecedor de marcar o parâmetro como o tipo de dados ntext ou como o tipo de dados de imagem , ocorre um erro se quaisquer operações de igualdade, operações de agrupamento ou operações de ordenação são a ser executadas sobre o parâmetro.

Resolução

Informações sobre a correcção

Está disponível a partir da Microsoft uma correcção suportada. No entanto, esta correcção destina-se a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham o problema descrito neste artigo. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pela próxima actualização de software que contenha esta correcção.

Se a correcção está disponível para transferência, existe uma secção "denominada transferência de correcção disponível" na parte superior deste artigo da base de dados de conhecimento. Se esta secção não for apresentado, contacte o serviço de cliente do Microsoft e suporte para obter a correcção.

Nota Se ocorram problemas adicionais ou se for necessária qualquer resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem esta correcção específica. Para obter uma lista completa dos números de telefone do suporte de cliente do Microsoft ou para criar um pedido serviço separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota O formulário "Transferência de correcção disponível" apresenta os idiomas para a qual a correcção está disponível. Se não vir o idioma, é porque uma correcção não está disponível para esse idioma.

Pré-requisitos

Para aplicar esta correcção, tem de desinstalar o anteriormente instalada SQL Server Compact 3.5 Service Pack 1 para instalar o ficheiro .msi que é fornecido com esta correcção. Se não desinstalar o anteriormente instalada SQL Server Compact 3.5 Service Pack 1, receberá uma mensagem de erro de instalação que indica que uma versão posterior do SQL Server Compact já está instalada. Para obter mais informações sobre o SQL Server Compact 3.5 Service Pack 1, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
955965Descrição do SQL Server Compact 3.5 Service Pack 1

Informações sobre reinício

Não é necessário reiniciar o computador depois de aplicar esta correcção.

Informações de registo

Não é necessário alterar o registo.

Informações sobre ficheiros da correcção

Esta correcção contém apenas os ficheiros necessários para corrigir os problemas referidos neste artigo. Esta correcção poderá não conter todos os ficheiros que necessita para actualizar completamente um produto para a compilação mais recente.

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item data e hora no painel de controlo.
Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroVersão do ficheiroTamanho do ficheiroDataTempoPlataforma
System.data.sqlserverce.Entity.dll3.5.5692.1230,48024-Set-200806: 46x 86 / x 64/IA-64
System.data.sqlserverce.dll3.5.5692.1271,44024-Set-200806: 46x 86 / x 64
Policy.3.5.System.data.sqlserverce.dll3.5.5692.113,39224-Set-200806: 46x 86 / x 64
Policy.3.5.System.data.sqlserverce.Entity.dll3.5.5692.113,39224-Set-200806: 46x 86 / x 64
Sqlceca35.dll3.5.5692.1343,10424-Set-200808: 07x 86
Sqlcecompact35.dll3.5.5692.184,54424-Set-200808: 07x 86
Sqlceer35en.dll3.5.5692.1148,03224-Set-200808: 07x 86
Sqlceme35.dll3.5.5692.165,08824-Set-200808: 07x 86
Sqlceoledb35.dll3.5.5692.1172,60824-Set-200808: 07x 86
Sqlceqp35.dll3.5.5692.1644,16024-Set-200808: 07x 86
Sqlcese35.dll3.5.5692.1348,22424-Set-200808: 07x 86

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais Informação

Depois de aplicar esta correcção, o fornecedor não adivinhar o tipo de dados de um parâmetro do tipo de dados EDM.String ou do tipo de dados EDM.Binary . O processador de consultas selecciona o tipo correcto de dados para o parâmetro com base no valor ou da coluna para que o parâmetro é equated ou com que o parâmetro é utilizado.

Por exemplo, na consulta de SQL de entidade seguinte, o processador de consultas selecciona o tipo de parâmetro de Nome dados ntext antes de aplicar esta correcção.
String name = "XYZ";
var q = from e in nwind.Employees
           where e.First_Name = name
           select e;
Depois de aplicar esta correcção, é seleccionado o tipo de dados da coluna nome para o parâmetro de nome .

No entanto, no exemplo seguinte, a consulta "LINQ a entidade" falha porque o parâmetro de nome é equated para nem utilizado com qualquer valor ou coluna.
String name = "XYZ";
var q = from e in nwind.Employees
           select name;
Esta correcção também resolve um problema conhecido que é descrito no documento Leia-me para SQL Server Compact 3.5. Para mais informações, consulte a secção "SQL Server Compact 3.5 SP1 tempo de execução de problemas para o ADO.NET entidade Framework" do seguinte Web site da Microsoft:
http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htm
Esta correcção resolve o problema está relacionado com instruções de Transact-SQL incorrectas que são geradas quando o fornecedor converte subconsultas escalares para aplicar construções de.

Nota Subconsultas correlated são convertidas para escalares subconsultas internamente. Subconsultas correlated não são suportadas nesta versão. Quando executa estas consultas, receberá a seguinte mensagem de erro:
Ocorreu um erro ao executar a definição de comandos. Consulte a excepção interna para obter detalhes.
A excepção interna contém a seguinte mensagem:
Ocorreu um erro ao analisar a consulta. [.., Token erro = AS]
A razão é que o Framework de entidade ADO.NET interpreta a consulta de entrada como uma consulta que tem o tipo de associação cruzada se aplicam ou o tipo de associação se aplicam OUTER. Se um lado direito da condição de associação devolve um valor escalar, a associação é convertida numa subconsulta escalar. O fornecedor do ADO.NET entidade Framework para SQL Server Compact tem de converter esse subconsulta escalar para uma consulta equivalente com o tipo de associação se aplicam OUTER, que é suportado pelo SQL Server Compact. No entanto, nesta versão, esta conversão não é efectuada correctamente. Por exemplo, ocorre um erro para a seguinte consulta nesta versão.
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());
    }
}
Para obter mais informações sobre o esquema de atribuição de nomes para as actualizações do SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribuição de nomes de ficheiros para pacotes de actualização de software do Microsoft SQL Server
Para obter mais informações sobre a terminologia de actualização de software, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 958478 - Última revisão: 17 de fevereiro de 2009 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server Compact 3.5
Palavras-chave: 
kbmt kbexpertiseadvanced kbfix kbautohotfix kbsurveynew kbqfe kbhotfixserver KB958478 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 958478

Submeter comentários

 

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