Unable to update the EntitySet ‘UsuariosGrupo’ because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.

Esto puede no suceder tan a menudo con unas buenas prácticas de diseño de Bases de Datos. Sin embargo en algunas aplicaciones como EA, algunas operaciones no son fáciles de ver y pueden finalmente desembocar en esto.

El escenario es sencillo. En una red social, digamos Facebook, puede usarse una tabla que relaciona Usuarios y Grupos a los que pertenecen. Esta tabla sería la relación n-n de las tablas Usuario y Grupo. Usamos Entity Framework para modelar y crear la capa de acceso de a datos de nuestra aplicación.

Nos damos cuenta que al crear un usuario podemos en un solo paso crear sus grupos por defecto o los que el haya decidido. Lo hacemos y al salvar los cambios en el modelo obtenemos la excepción que encabeza este breve post.

La Solución

En mi caso el problema es que esa tabla intermedia carecía de llaves primarias, que en este caso es una llave compuesta por los dos id de las tablas Usuario y Grupo. Los creé en la BD y regeneré el modelo y todo funcionó como yo esperaba desde el principio.