update related read mvc lazy framework data c# entity-framework-5 entity-framework-6

related - select entity framework c#



Vistas actualizables en Entity Framework 5/6 (3)

Creo que en lugar de usar .edmx, vas con clases de poco y usas las clases dbcontext y modelbuilder para mapear su muy ligero o no se actualiza cada vez que actualizas la base de datos. Es muy eficiente y escalable.

Espero que ayude.

Tengo varias vistas que son actualizables de acuerdo con http://technet.microsoft.com/en-us/library/ms187956.aspx .

Todos mis puntos de vista siguen las especificaciones en el artículo incluido. He verificado en SQL Management Studio que las vistas se pueden actualizar, insertar y eliminar.

La investigación que he realizado me ha llevado a dos opciones para actualizar las vistas en mi Entity Framework 5/6 Model:

  1. Elimine la etiqueta de cada vista; sin embargo, cualquier trabajo realizado en MyContext.edmx se sobrescribe al actualizar el contexto desde la base de datos. Esto significa que esta solución no es muy viable para mi proyecto.

  2. Agregar un procedimiento almacenado de inserción, actualización y eliminación para cada vista y mapearlos en el diseñador. No me gusta especialmente la idea de tener que crear tantos procedimientos almacenados.

¿Hay alguna manera fácil de indicar a EF5 O EF6 que las vistas pueden agregarse a / actualizarse / eliminarse y no se eliminarán cuando se ejecuten los comandos subsiguientes "Actualizar modelo desde base de datos" sin escribir procedimientos almacenados para cada método de entrada (insertar, actualizar , eliminar) en cada vista?


Creo que su método más sencillo sería cambiar la definición de su EntitySet en su StorageModel para decirle que lo considere como una tabla, en lugar de una vista de base de datos.

Mirando la definición XML, donde dice

<EntitySet Name="Products" store:Type="Views" ..

le cambias eso a

<EntitySet Name="Products" store:Type="Tables" ..

(Note que "Productos" es solo un ejemplo) Esto debería estar en su archivo .edmx.
Ver pág. 44, Lerman, "Programming Entity Framework", 2ª ed.

Espero que esto ayude.


Puede obtener la clave principal de la vista y hacer su declaración de actualización utilizando la clave principal. Sólo una forma de trabajar alrededor.