2012-05-04 18 views
5

Estoy utilizando clases de POCO generadas y Entity Framework.Eliminando las propiedades de navegación de POCO-classes en Entity Framwork

Para hacer el código menos complejo, intento eliminar todas las propiedades de navegación del código mientras sigo manteniendo las restricciones de clave externa en la base de datos (las propiedades de navegación hacen más daño que bien para nosotros).

Si les quita manualmente de las clases poco-me sale el siguiente error

The entity type UserEntity is not part of the model for the current context

Si trato de eliminarlos de la .edmx-archivo me sale el siguiente error:

Error 3 Error 3015: Problem in mapping fragments starting at lines 479, 562:Foreign key constraint 'fk_StorageContracts_User1' from table StorageContract (OwnerUserID) to table User (ID):: Insufficient mapping: Foreign key must be mapped to some AssociationSet or EntitySets participating in a foreign key association on the conceptual side.

¿Hay alguna manera de eliminar las propiedades de navegación de las clases POCO sin eliminar el FK correspondiente?

+0

¿Qué problemas tiene con las propiedades de navegación? – Eranga

+0

Usando "clases de POCO generadas", ¿está trabajando primero en el modelo? ¿En qué momento obtiene el error "El tipo de entidad UserEntity no es parte del modelo para el contexto actual"? –

+0

@SteveWilkes: Estoy utilizando este enfoque http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx (con EF 4.3). Me sale el error cuando trato de recuperar una entidad desde el db. – Yrlec

Respuesta

1

Sé que esto es viejo, pero, ya que todavía no hay respuesta, pensé que le daría una oportunidad:

Todavía estoy trabajando en EF 4.0, pero, siguiendo el ejemplo que usted ha mencionado , tienes un xxxModel.tt. Si está dispuesto a ajustar eso, puede encontrar dónde genera las Propiedades de navegación y cambiarlas para que sean simples propiedades automáticas. Tenía un proyecto similar en el que las generó así:

public List<NavDataX> NavDataXs 
{ 
    get; set; 
} 

Ahora, todavía están allí, pero son nulas hasta que se establezca explícitamente. Al hacerlo de esta manera, no me metí con el EDMX y no encontré los dos errores que mencionaste.

+0

+1 a la pregunta y esta respuesta que me ayudaron a rastrear mi problema con EF 5.0. En mi caso, tengo un archivo .tt en un proyecto separado que apunta a un archivo .edmx global (grande). Lo modifiqué para suprimir la salida de clases y propiedades de navegación no deseadas, pero luego no pude entender por qué el contexto no cargaría mis objetos. Seguí recibiendo "El tipo de entidad [NAME] no es parte del modelo para el contexto actual", para la cual la mayoría de los resultados de búsqueda web sugieren un problema de conexión, en lugar de un problema de asignación. –

Cuestiones relacionadas