Estoy creando un servicio OData con WCF Data Services usando un EDMX. ¿Cómo puedo crear una propiedad calculada para un tipo de entidad, de modo que su valor se compute en el servicio (C#) y no provenga de la base de datos?
El valor de esta propiedad se basa en el valor de otras propiedades, que se asignan a campos en la base de datos.¿Cómo crear una propiedad calculada en los servicios de datos (OData)?
Respuesta
La solución que encontré es utilizar Entity Framework Code First en lugar de un EDMX. Le permite crear propiedades calculadas simplemente creando propiedades estándar en el código.
Aquí se muestra un ejemplo:
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
public String FullName
{
get { return FirstName + " " + LastName; }
}
}
Si usted está exponiendo su archivo EDMX directamente, usando el valor por defecto del proveedor Marco de la entidad de servicios de datos, algo como esto:
public class MyService: DataService<MyEntities> {
Entonces, lamentablemente no se puede exponer a ningún 'nuevas' propiedades que no están en el modelo subyacente de EDM de Entity Framework.
Habiendo dicho que tiene otras opciones, puede escribir un proveedor de reflejo o un proveedor personalizado que agregue la propiedad adicional y delegue la mayor parte del trabajo en EF bajo el capó.
El problema es configurar toda la delegación NO es fácil hoy.
Este series of posts explica los proveedores y muestra cómo crear un servicio personalizado basado en el proveedor, y esto one shows cómo crear un servicio utilizando el proveedor de reflejos.
Gracias Alex. Marcaré su respuesta como la respuesta aceptada, aunque encontré una solución más fácil: en lugar de usar un EDMX, utilizo Entity Framework Code First; me permitió crear propiedades computadas simplemente creando propiedades en el código. Documentaré esto en una publicación de blog. – Fabrice
- 1. Exponer datos de los servicios de WCF como oData
- 2. ¿Cómo hago una propiedad calculada y filtrada?
- 3. Servicios de datos WCF (OData), consulta con limitación de herencia?
- 4. INotifyPropertyChanged y propiedad calculada
- 5. Crear una columna calculada en SQL Server 2008
- 6. Diferencia entre los servicios web OData y REST
- 7. Cómo crear una matriz observable calculada en Knockout
- 8. ¿Semántica de memoria de una propiedad de matriz calculada?
- 9. Cómo realizar una expansión ODATA en LinqPad
- 10. Servicios RIA OData "Las opciones de consulta no están permitidas".
- 11. ¿Se pueden usar los servicios de datos WCF (ne OData, ne Astoria, ne ADO.NET Data Service) con NetTcpBinding?
- 12. Uso de enumeraciones en Servicios de datos WCF
- 13. Servicios de datos de WCF: cómo evitar los miembros de __metadata
- 14. SQLAlchemy: cómo hacer un mapa con una propiedad de solo lectura (o calculada)
- 15. JPA - columna calculada como propiedad de clase de entidad?
- 16. ¿Existe una biblioteca de servidor OData para Java o PHP que EXPONE OData?
- 17. crear dependencia entre los servicios de Windows inicio
- 18. ¿Columna calculada basada en otra columna calculada?
- 19. los servicios de datos de ADO.NET con LINQ to SQL
- 20. ¿Qué es exactamente OData?
- 21. ¿Cómo crear servicios web en Zend Framework?
- 22. WCF Dataservices y OData
- 23. ¿Cómo implementar un cliente dinámico de OData en C#?
- 24. ¿Cómo actualizo una entidad OData y modifico sus propiedades de navegación en una sola solicitud?
- 25. Seleccionar valores distintos con odata
- 26. ¿Cómo utilizar los servicios SQL de Azure desde una Mac?
- 27. Servicios RIA: ¿Cómo puedo crear una autenticación personalizada?
- 28. ¿Existe alguna manera más fácil de crear un proveedor de consultas del servicio de datos WCF/OData?
- 29. ¿Cómo puedo almacenar en caché una columna calculada en rieles?
- 30. ¿Puedo exponer datos de MySQL usando PHP y OData?
Lamentablemente, solo es adecuado para Reflection Provider que brinda capacidad de lectura de solo lectura Servicio de datos. –