2009-03-06 18 views
18

me encuentro con un error extraño al utilizar LINQ a SQL con los servicios de datos ado.net. Tengo una aplicación Silverlight simple que se conecta a una base de datos remota. Primero agregué la clase linq-a-sql y arrastré una tabla al diseñador. Luego agregué un Servicio de Datos ADO.NET, actualicé la referencia del Servicio de Datos para apuntar al contexto de Datos L2S.los servicios de datos de ADO.NET con LINQ to SQL

Compilado sin problemas.

Al abrir el servicio en IE inmediatamente me sale un error por lo que añadir el siguiente atributo al servicio de datos:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] 

Esto muestra el mensaje de error detallado:

La excepción el mensaje es 'En el tipo de contexto de datos' DataClasses1DataContext ', hay una propiedad IQueryable superior' table1 'cuyo tipo de elemento no es un tipo de entidad. Asegúrese de que la propiedad es de tipo IQueryable entidad o especifican los IgnoreProperties atribuyen el tipo de contexto de datos de ignorar esta propiedad

esto le sucede a cualquier tabla de base de datos que utilizo en el diseñador L2S!

¿Qué es este error y por que tengo que?

+0

A cada uno de los puntos finales se puede acceder mediante http: // localhost/{ServiceName}/{EndPointName} – jdiaz

Respuesta

21

Deberá decorar sus clases con el atributo DataServiceKey.

Más detalles en el blog de Marc here, y un blog de MSDN here (este último habla de muchas relaciones, pero cubre el atributo DatServiceKey).

+0

que explicaron mucho pero ¿por qué no me muestran las entidades en formato XML? Simplemente dice DEFAULT table1. Incluso utilicé config.SetEntitySetAccessRule ("table1", EntitySetRights.All); – jdiaz

+0

Además, si no hay una clave principal establecida en la tabla, ¿cómo puedo saber qué propiedad establecer como DataServiceKey? – jdiaz