Em meu aplicativo Silverlight, estou tentando criar uma conexão de banco de dados usando LINQ. Primeiro, adiciono uma nova classe LINQ to SQL e arrasto minha tabela chamada "tblPersoon" para ela.
Então, em meu arquivo de serviço, tento executar a seguinte consulta:
[OperationContract]
public tblPersoon GetPersoonByID(string id)
{
var query = (from p in tblPersoon where p.id == id select p).Single();
Mas em tblPersoon isso me dá o seguinte erro.
Não foi possível encontrar uma implementação do padrão de consulta para o tipo de fonte 'SilverlightApplication1.Web.tblPersoon'. 'Onde' não foi encontrado.
E mesmo quando tento o seguinte:
var query = (from p in tblPersoon select p).Single();
Recebo um erro dizendo 'Selecionar' não encontrado!
O código da classe gerada para minha tabela pode ser encontrado aqui: http://pastebin.com/edx3XRhi
O que está causando isso e como eu possivelmente resolveria isso?
Obrigado.
public System.Data.Linq.Table<tblPersoon> tblPersoons { get { return this.GetTable<tblPersoon>(); } }
E quando eu uso: var query = (de p em tblPersoon.Cast <Person> () selecione p) .Single (); Isso me dá os seguintes erros em .Cast. 'SilverlightApplication1.Web.tblPersoon' não contém uma definição para 'Elenco'tblPersoons
(observe o s no final) enquanto o tipo étblPersoon
. Você consulta tipo, em vez de propriedade no tipo.var query = (from p in tblPersoons select p).Single();
isso me diz que tblPersoons nem existe.Pode ser necessário adicionar uma
using
declaração ao arquivo. O modelo de classe padrão do Silverlight não inclui:fonte
Certifique-se de que essas referências estejam incluídas:
Em seguida, adicione a instrução using
fonte
Tive um problema semelhante com conjuntos de dados fortemente tipados gerados, a mensagem de erro completa foi:
Do meu código:
Então, fiz o que sugeri e especifiquei explicitamente o tipo:
O que funcionou muito bem.
fonte
Você está perdendo uma igualdade:
where
cláusula deve resultar em um booleano.OU você não deve usar
where
:fonte
Eu tive o mesmo erro descrito pelo título, mas para mim foi simplesmente instalar o Microsoft access 12.0 oledb redistributable para usar com o LinqToExcel.
fonte
A maneira mais fácil de fazer isso é converter este IEnumerable em um Queryable
Se for um questionável, então a realização de consultas torna-se fácil.
Por favor, verifique este código:
Certifique-se de incluir System.Linq . Desta forma, o seu erro será resolvido.
fonte
Para aqueles de vocês (como eu) que perderam muito tempo com este erro:
Recebi o mesmo erro: "Não foi possível encontrar a implementação do padrão de consulta para o tipo de origem 'DbSet'", mas a solução para mim foi corrigir um erro no nível DbContext.
Quando criei meu contexto, eu tinha o seguinte:
E meu Repositório (eu estava seguindo um padrão de Repositório no guia ASP.NET) era assim:
Meu problema veio da configuração inicial do meu DbContext, quando usei DbSet como genérico em vez do tipo.
Mudei
public DbSet Contacts { get; set; }
parapublic DbSet<Contact> Contacts { get; set; }
e de repente a consulta foi reconhecida.Provavelmente é isso que km diz em sua resposta, mas como ele mencionou
IEnumerable<t>
e nãoDbSet<<YourDomainObject>>
, tive que vasculhar o código por algumas horas para encontrar a linha que causou essa dor de cabeça.fonte
Eu tive o mesmo erro, mas para mim, foi atribuído a ter um banco de dados e uma tabela com o mesmo nome. Quando adicionei o objeto de entidade ADO .NET ao meu projeto, ele gerou incorretamente o que eu queria em meu arquivo de contexto de banco de dados:
que deveria ter sido:
E
que eu realmente não precisava, então comentei.
Eu estava tentando puxar minha mesa assim, no meu controlador, quando recebi meu erro:
Corrigi o contexto do meu banco de dados e tudo ficou bem depois disso.
fonte