Pregunta

Yo uso un WCF DataService y desea utilizar POCOs. Tengo que especificar un DataServiceKey con el fin de que funcione (obviamente). Cuando hago lo que tengo que hacer referencia a System.Data.Services.Client (por System.Data.Services.Common) -. El que no se siente muy POCO

¿Hay una manera de mantener los objetos limpios y especificar la clave en algún lugar otro sitio?

¿Fue útil?

Solución

Si está utilizando un proveedor de reflexión y sus clases no seguir una convención de propiedades clave, entonces usted tiene que utilizar el atributo DataServiceKey. proveedor de reflexión es la que se obtiene si se sólo tiene que proporcionar las definiciones de clase y clase de contexto a la DataService. Así que si no se implementa IDataServiceMetadataProvider, que es muy probable el uso de un proveedor de reflexión. Es posible utilizar proveedor de reflexión sin los atributos en sus clases, pero entonces los Datos de Servicios WCF se aplica una heurística para averiguar las propiedades clave. Dice así:

  • si la clase en cuestión tiene una propiedad llamada ID, que es una entidad con la identificación como la propiedad única clave.
  • si la clase se llama, por ejemplo, Al cliente y tiene una propiedad llamada CustomerID, es una entidad con el propiedad de cliente como la única clave propiedad (el nombre de la clase es obviamente, al igual que la muestra).

No hay otras propiedades son reconocidas como propiedades clave sin el atributo DataServiceKey. Esto también se describe por ejemplo en este blog: http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using -la-reflexión-provider.aspx

Es posible utilizar el 100% clases POCO con propiedades clave arbitrarias, pero entonces tendría que implementar un proveedor personalizado. Esto es considerablemente más trabajo ya que tiene que definir la forma de sus clases de programación. Un proveedor personalizado de ejemplo tutorial se puede encontrar aquí: http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top