En mi aplicación Silverlight, estoy tratando de crear una conexión de base de datos usando LINQ. Primero agrego una nueva clase LINQ to SQL y arrastro mi tabla llamada "tblPersoon" a ella.
Luego, en mi archivo de servicio, trato de ejecutar la siguiente consulta:
[OperationContract]
public tblPersoon GetPersoonByID(string id)
{
var query = (from p in tblPersoon where p.id == id select p).Single();
Pero en tblPersoon me da el siguiente error.
No se pudo encontrar una implementación del patrón de consulta para el tipo de fuente 'SilverlightApplication1.Web.tblPersoon'. 'Donde' no encontrado.
E incluso cuando intento lo siguiente:
var query = (from p in tblPersoon select p).Single();
Me da un error que dice "Seleccionar" no encontrado.
El código para la clase generada para mi tabla se puede encontrar aquí: http://pastebin.com/edx3XRhi
¿Qué está causando esto y cómo podría solucionarlo?
Gracias.
public System.Data.Linq.Table<tblPersoon> tblPersoons { get { return this.GetTable<tblPersoon>(); } }
Y cuando uso: var query = (from p in tblPersoon.Cast <Person> () select p) .Single (); Me da los siguientes errores en .Cast. 'SilverlightApplication1.Web.tblPersoon' no contiene una definición para 'Cast'tblPersoons
(tenga en cuenta la s al final) mientras que el tipo estblPersoon
. Consulta el tipo, en lugar de la propiedad sobre el tipo.var query = (from p in tblPersoons select p).Single();
, me dice que tblPersoons ni siquiera se excita.Es posible que deba agregar una
using
declaración al archivo. La plantilla de clase de Silverlight predeterminada no la incluye:fuente
Asegúrese de que se incluyan estas referencias:
Luego agregue la declaración de uso
fuente
Tuve un problema similar con conjuntos de datos generados fuertemente tipados, el mensaje de error completo fue:
De mi código:
Así que hice lo que sugirió y especifiqué explícitamente el tipo:
Que funcionó de maravilla.
fuente
Te falta una igualdad:
where
la cláusula debe resultar en un booleano.O no deberías usar
where
en absoluto:fuente
Tuve el mismo error que se describe en el título, pero para mí simplemente estaba instalando Microsoft Access 12.0 oledb redistributable para usar con LinqToExcel.
fuente
Hola, la forma más fácil de hacer esto. es convertir este IEnumerable en un Queryable
Si se puede consultar, realizar consultas se vuelve fácil.
Por favor revise este código:
Asegúrese de incluir System.Linq . De esta forma se resolverá su error.
fuente
Para aquellos de ustedes (como yo) que perdieron demasiado tiempo con este error:
Recibí el mismo error: "No se pudo encontrar la implementación del patrón de consulta para el tipo de fuente 'DbSet'", pero la solución para mí fue corregir un error en el nivel de DbContext.
Cuando creé mi contexto tenía esto:
Y mi Repositorio (estaba siguiendo un patrón de Repositorio en la guía ASP.NET) se veía así:
Mi problema provino de la configuración inicial de mi DbContext, cuando usé DbSet como genérico en lugar del tipo.
He cambiado
public DbSet Contacts { get; set; }
apublic DbSet<Contact> Contacts { get; set; }
y de pronto se reconoció la consulta.Esto es probablemente lo que dice km en su respuesta, pero como lo mencionó
IEnumerable<t>
y noDbSet<<YourDomainObject>>
, tuve que buscar en el código durante un par de horas para encontrar la línea que causó este dolor de cabeza.fuente
Tuve el mismo error, pero para mí, se atribuyó a tener una base de datos y una tabla con el mismo nombre. Cuando agregué el objeto de entidad ADO .NET a mi proyecto, generó mal lo que quería en el archivo de contexto de mi base de datos:
que debería haber sido:
Y
que en realidad no necesitaba, así que lo comenté.
Estaba tratando de tirar de mi tabla de esta manera, en mi controlador, cuando recibí mi error:
Corregí el contexto de mi base de datos y todo estuvo bien, después de eso.
fuente