none
Modificación de claves primarias con entity Framework RRS feed

  • Pregunta

  • Buenos días,

    Estoy empezando a desarrollar un proyecto con Entity Framework 5, anteriormente el modelo de datos sobre el que trabajo se basaba en dataset tipados. Me encuentro con el problema de los formularios de la aplicación necesitan modificar campos que son clave primaria y cuando lo hago me devuelve el siguiente error : "La propiedad 'ORDEN' es parte de la información de clave del objeto y no se puede modificar."

    He leido que las entidades deben tener siempre clave primaria, pero en mi caso no sería necesaria (trabajando con dataset tipados bastaba con dejar la propiedad PrimaryKey = null de los datatable)

    ¿Hay alguna forma de poder modificar campos que son clave primaria?

    Muchas gracias!!

    lunes, 28 de octubre de 2013 13:17

Todas las respuestas

  • hola

    He leido que las entidades deben tener siempre clave primaria, pero en mi caso no sería necesaria (trabajando con dataset tipados bastaba con dejar la propiedad PrimaryKey = null de los datatable)

    no usar clave primaria implica un pesimo diseño

    como identificas una entidad de otra sino tiene una key?

    ¿Hay alguna forma de poder modificar campos que son clave primaria?

    si es cambiar el valor puede hacelro siemrpe y cuando no entre en conflicto con otro registro, o sea no puede poner dos registros con la misma key porque tendras un error

    pero si cambias el valor de la columna key por otro que aun no existe eso puede hacerlo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 28 de octubre de 2013 17:26
  • Muchas gracias por tu respuesta

    Ya encontre la manera, la dejo aqui por si a alguien le fuera de utilidad...

    Si dejas la entidad con entityState.detached luego te deja modificar los campos que son clave primaria:

    contexto.Entry(entidad).State = EntityState.Detached;

    entidad.ORDEN = 30;

    Después con "contexto.SaveChanges()" aparecerá una excepción si hay claves duplicadas

    martes, 29 de octubre de 2013 8:28
  • hola

    entiendo que ORDEN es la key de la tabla, la cual no es del tipo identity

    si es asi al hacer esto que planteas no estara realizando un UPDATE sobre la entidad si esta ya existe, o en caso contrario realizara un INSERT con el registro con el valor 30, dejando aun el registro con el id original

    digo si cambias el id la idea no era eliminar el anterior

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 29 de octubre de 2013 16:21