none
The member with identity 'xx' does not exist in the metadata collection.\r\nParameter name: identity RRS feed

  • Pregunta

  • Buenas, me he encontrado con un problema al modificar la entidad ApplicationUser utilizando Identity 2.0. La cuestión es que he añadido una relación "many to many" para añadirle una lista de elementos a la entidad de usuario.

    Al dar de alta un usuario y añadir esta lista me he encontrado con el siguiente error:

    The member with identity 'xxx' does not exist in the metadata collection.

    Parameter name: identity

    Esto se debe a que tenemos dos Contextos: El primero el que utilizamos nosotros para tratar esa lista y añadirla posteriormente al usuario, y la otra es que UserManager utiliza su propio contexto.

    Por lo tanto, cuando intentamos añadir la lista de elementos al usuario, Entity Framework (EF6) no sabe convivir con los dos contextos, ni tiene attachada la entidad con la que estamos trabajando en el contexto.

    Solución: He solucionado el problema de la siguiente manera, como todo, hay varias soluciones:

    1. Attachamos la entidad con la que estamos trabajando al contexto

    Context.Users.Attach(Entity);

    2. Realizamos las operaciones oportunas con Entity (nuestra entidad)

    3. Le indicamos al contexto que la entidad ha sido modificada.

    Context.Entry(Entity).State = EntityState.Modified;

    4. Savechanges para que los cambios tenga efecto.

    Context.SaveChanges();

    He puesto el problema con la solución porque me ha costado encontrar este error en concreto.

    Espero que sirva de ayuda.

    Saludos,

    Samuel.

    martes, 25 de noviembre de 2014 9:15

Todas las respuestas

  • hola

    esta entidad que relacionas la defines en el mismo contexto de seguridad que especifica asp.net ? o estas creandolo en un contexto separado

    en el punto 3 veo que asignas un stado de modificacion, pero sobre que entidad lo realizas ? es sobre la del usuario

    si validas la estructura de las tablas en la db, de casualidad no se creo una tabla extra de usuarios? lo planteo porque quizas la relacion no quedo vinculada a los usuarios del conecto de EF sino que creo una  entidad diferente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 25 de noviembre de 2014 11:17
  • Hola Leandro,

    La entidad la obtengo cuando hago la llamada a UserManager y por defecto me crea otro contexto diferente con el usuario.

    Si, en el punto 3, le cambio el estado a la entidad de usuario que he attachado en el contexto principal, ya que sino EF no sabe tratarla.

    No se creó ninguna otra tabla extra, solo trabajo con las tablas de usuario que crea Identity.

    Saludos,

    Samuel.

    domingo, 14 de diciembre de 2014 19:16