7

Tengo el error¿El mapeo de los procedimientos almacenados es todo o nada en Entity Framework? (FunctionMapping)

¿No encuentra el InsertFunctionMapping para EntityType 'xxx' en el archivo de asignación .

Lo cual es justo porque es verdad. Pero eso es porque estoy feliz con EF haciendo inserciones para mí. Simplemente quiero anular la función de eliminación.

Pensé que era una de las mejoras con EF4? ¿O es solo que se compilará bien pero aún llorará cuando uses las funciones no asignadas? ¿O es posible, pero me estoy perdiendo algo?

Respuesta

11

AFAIK. Es todo o nada.

Si no asigna las tres operaciones de inserción, actualización o eliminación de un tipo de entidad a procedimientos almacenados, las operaciones no asignadas fallarán si se ejecutan en tiempo de ejecución y se lanza una UpdateException.

MSDN

1

que tienen la misma o similar problema. Solo deseo sobrescribir la función de eliminación, pero no es posible en EF4 sin anular también las funciones de inserción y actualización. En mi caso tengo que hacer esta acción de borrado:

update table set deleted = 1 where id = @id 

He resuelto esto de esta manera: Antes de llamar al método context.SaveChanges(true) corro el código

foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted)) 
{ 
    entry.ChangeState(EntityState.Modified); 
    entry.Entity.GetType().GetProperty("deleted").SetValue(entry.Entity, true, null); 
} 

soy principiante en EF . Ahora solo busco cómo resolver algunos problemas con EF que tengo que resolver antes de comenzar a desarrollar aplicaciones basadas en EF. Pero ahora parece que esta solución debería funcionar. Espero.

Cuestiones relacionadas