Generar el modelo(s)
Usted puede:
- El uso de la convenio modelo de generador de de ASP.NET Web API.Esto genera un modelo diferente de lo que EF de la propia convención modelo de generador produce:un EdmLib
IEdmModel
.Ver esta pregunta aunque si está utilizando el modelo de primera o de base de datos en primer lugar.Este método parece muy atrás, y lo es, pero en su mayoría obras. - Serializar el modelo de EF y reconstruirlo como un
IEdmModel
(ver esta pregunta).De nuevo, esto es muy ineficiente.Si usted está utilizando el modelo de primer o base de datos-en primer lugar, usted querrá sólo deserializar el archivo EDMX para construir elIEdmModel
.Todavía produce un modelo diferente internamente, pero al menos el CDSL es más estable formato de código CLR convenios, por lo que probablemente tienen menos sorpresas que se obtendría cuando el uso de dos diferentes convención basada en el modelo de los constructores.
La razón de esto es que ASP.NET Web de la API de OData extensiones de uso EdmLib, mientras que EF utiliza su propio código, y no hay ningún plan para hacerlos trabajar juntos.Tal vez usted encontrará esta diatriba útil si tienes curiosidad.
Trabajando en la API
Una vez generado el modelo a partir de una única fuente (de modo que usted puede trabajar en su modelo a partir de un solo lugar), usted realmente tiene que crear un controlador por cada entidad, básicamente.El punto de la API de Web no es la de construir cosas "automágicamente", sino para ofrecer flexibilidad a los desarrolladores.El EntitySetController
ayuda a la reducción de la redundancia, pero no ofrecen de todo, fuera de la caja.
Tomando un paso atrás
En la diatriba se mencionó anteriormente, también hablo sobre la diferencia entre un servicio de la capa de API y una la capa de datos La API.ASP.NET Web API es más adecuado para los servicios, mientras que OData hace que los servicios de torpe.Por otro lado, OData hace que los datos de acceso de una brisa (siendo esencialmente como un Descanso SQL) y por el hecho de estar conectado directamente con el modelo de datos, puede automatizar un montón de cosas, como se vio con Servicios de Datos de WCF.ASP.NET Web API con OData extensiones se sienta en el medio, y su valor no es universalmente acordados (el uso de ciertos bits de OData sintaxis URI en la Api de servicio es sin duda útil aunque).
No demasiado acentuados por los recientes rumores que giran alrededor de ASP.NET Web de la API, y Servicios de Datos de WCF son muy diferentes de las bestias y se ejecutan en diferentes capas en su diseño.De hecho, en una arquitectura de varios niveles, se puede muy bien ver a un servicio de API construida utilizando ASP.NET la API de Web sentado en la cima de un OData API construido el uso de Servicios de Datos de WCF.
Mi consejo es pensar cuidadosamente acerca de lo que usted está tratando de construir, y dependiendo de la respuesta, o bien elija ASP.NET API Web y aceptar el hecho de que la API de exponer será muy diferente de una centrada en los datos OData API, o un palo con Servicios de Datos de WCF.
Un posible plan
Usted puede encontrar una gran cantidad de material en la web acerca de los servicios de la capa de Api en la web mediante la búsqueda de términos como "no-CRUD web/Descanso/hipermedia API" o mediante la comparación de productos como ServiceStack, que abogan por la menor cantidad de datos orientada a la Api.
Si usted todavía no está seguro acerca de la naturaleza de su proyecto, prototipo.
- Si usted termina con un montón de esencialmente idénticos a los controladores con la API de Web, cada una asignada a exactamente una entidad, entonces su API está fuertemente orientada a datos. Ir con Servicios de Datos de WCF.
- Si usted termina con un montón de OData Acciones y torpe entidades con Servicios de Datos de WCF, entonces usted necesita más lógica de dominio en el servidor de la API, y los datos de orientación no ofrece suficiente. Vaya con la API de Web.Una buena regla de oro aquí es tratar de OData acciones como tratan los procedimientos almacenados en SQL DBMS.En realidad, el tratamiento de cualquier OData server como gestor de base de datos, porque eso es lo que son. Si usted no diría que detrás de una interfaz de SQL, no la pongas detrás de un OData interfaz.
Importante (Actualización)
Se anunció el 27 de Marzo de 2014 que los Servicios de Datos de WCF sería descontinuado por Microsoft en favor de ASP.NET Web API.Para manejar la "capa de datos" casos de uso que he expuesto aquí, Microsoft ha dicho que planea ampliar ASP.NET Web API.Algunos la comunidad los esfuerzos también están en marcha.Servicios de Datos de WCF también ser de código abierto, en algún momento, así que no es imposible que un nuevo mantenedor se toma de posesión, aunque es incierto.