Sumário

Este artigo descreve os seguintes sobre esta versão de correcção:

  • Os problemas corrigidos pelo pacote de correção

  • Os pré-requisitos para instalar o pacote de correção

  • Se é necessário reiniciar o computador depois de instalar o pacote de correção

  • Se o pacote de correcções é substituído por qualquer outro pacote de correcção

  • Se tem de efectuar quaisquer alterações ao registo

  • Os ficheiros que estão contidos no pacote de correcção

Sintomas

Considere o seguinte cenário. Uma aplicação utiliza o Microsoft ADO.NET Entity Framework incluída no Microsoft .NET Framework 3.5 Service Pack 1 para aceder a uma base de dados do Microsoft SQL Server Compact 3.5. Na aplicação, executar uma consulta de "LINQ para entidades" que utiliza um parâmetro de cadeia ou um parâmetro na base de dados binário. Neste cenário, recebe a seguinte mensagem de erro quando executa a aplicação:

Os tipos de dados ntext e de imagem não podem ser utilizados sempre que, HAVING, GROUP BY, na ou nas cláusulas, excepto quando estes tipos de dados são utilizados com semelhantes ou é nula predicados.

Causa

Quando utilizar parâmetros para uma consulta de "LINQ para entidades" numa aplicação, não é possível especificar os tipos de base de dados de base. O fornecedor do SQL Server Compact Entity Framework tenta criar um parâmetro de nível do fornecedor baseado os aspectos relacionados com o modelo de dados de entidade (EDM) do parâmetro original. SQL Server Compact não suporta o tipo de dados de tipo ou o tipo de dados varbinary(max) . Por conseguinte, quando o fornecedor selecciona o tipo de dados para 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 com base no facetas EDM do parâmetro:

  • Um parâmetro de cadeia, o fornecedor selecciona o tipo de dados ntext ou do tipo de dados nvarchar(4000) .

  • Para um parâmetro de binário, o fornecedor selecciona o tipo de dados de varbinary(4000) ou o tipo de dados de imagem .

Se o fornecedor de marcar o parâmetro como o tipo de dados de nvarchar(4000) ou como o tipo de dados de 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 as operações de igualdade, agrupamento operações ou operações de ordenação estão a ser efectuadas sobre o parâmetro.

Resolução

Informações sobre correção

Existe uma correção suportada pela Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correção apenas em sistemas que tenham o problema descrito neste artigo. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afetado por este problema, recomendamos que aguarde pela próxima atualização de software que contenha esta correção.Se a correcção estiver disponível para transferência, existirá uma secção de "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 apresentada, contacte o Suporte ao Cliente da Microsoft para obter a correção.Nota Caso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, visite o seguinte Web site da Microsoft:

http://support.microsoft.com/contactus/?ws=supportNota O formulário "Transferência de correcção disponível" apresenta os idiomas nos quais a correcção está disponível. Se não visualizar o seu 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 mais informações sobre o SQL Server Compact 3.5 Service Pack 1, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:

Descrição de 955965 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 tem de alterar o registo.

Informações de ficheiros de correcção

Esta correcção contém apenas os ficheiros que são necessárias para corrigir os problemas listados 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 listadas 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.

Nome do ficheiro

Versão do ficheiro

Tamanho do ficheiro

Data

Hora

Plataforma

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

Estado

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

Mais informações

Depois de aplicar esta correcção, o fornecedor não identificar o tipo de dados para um parâmetro da EDM. Cadeia tipo de dados ou a EDM. Binário tipo de dados. O processador de consultas selecciona o tipo de dados correcto para o parâmetro com base no valor ou na coluna para o parâmetro equivale ou com que o parâmetro é utilizado.Por exemplo, na consulta de SQL de entidade seguinte, o processador de consultas selecciona o tipo de dados ntext para o parâmetro de nome 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, o tipo de dados da coluna Nome_Próprio está seleccionado para o parâmetro de nome .No entanto, no exemplo seguinte, a consulta de "LINQ para a entidade" falha porque o parâmetro de nome não é equiparar a nem utilizado com qualquer outro 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 de "SQL Server Compact 3.5 SP1 Runtime problemas para o ADO.NET Entity Framework" do seguinte Web site da Microsoft:

http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmEsta 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.Nota As subconsultas correlacionadas são convertidas em subconsultas escalares internamente. As subconsultas correlacionadas não são suportadas nesta versão. Quando executa estas consultas, recebe a seguinte mensagem de erro:

Ocorreu um erro ao executar a definição de comando. 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 = como]

A razão é que o ADO.NET Entity Framework interpreta a entrada consulta como uma consulta que tem o tipo de associação cruzada aplicam-se ou o tipo de associação exterior aplicar. Se o lado direito da condição de associação devolve um valor escalar, a associação é convertida numa subconsulta escalar. O fornecedor do ADO.NET Entity Framework para SQL Server Compact tem de converter esse subconsulta escalar para uma consulta equivalente que tenha o tipo de associação exterior aplicáveis, que é suportado pelo SQL Server Compact. No entanto, nesta versão, esta conversão não for correctamente efectuada. 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 mais informações sobre o esquema de atribuição para actualizações do SQL Server, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:

Pacotes de actualização de atribuição de nomes de esquema novo 822499 para software Microsoft SQL ServerPara mais informações sobre a terminologia de atualização de software, clique no seguinte número de artigo para visualizar o artigo na Base de Dados de Conhecimento Microsoft:

824684 descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.