Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

791
Vistas
¿Cómo puedo recuperar la identificación de la entidad insertada usando el marco de la entidad?

Tengo un problema con Entity Framework en ASP.NET. Quiero obtener el valor de Id cada vez que agrego un objeto a la base de datos. ¿Cómo puedo hacer esto?

Según Entity Framework , la solución es:

 using (var context = new EntityContext()) { var customer = new Customer() { Name = "John" }; context.Customers.Add(customer); context.SaveChanges(); int id = customer.CustomerID; }

Esto no obtiene la identidad de la tabla de la base de datos, pero obtiene la ID asignada de la entidad, si eliminamos un registro de la tabla, la identidad inicial no coincidirá con la ID de la entidad.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

es bastante fácil Si está utilizando ID generados por DB (como IDENTITY en MS SQL), solo necesita agregar una entidad a ObjectSet y SaveChanges en ObjectContext relacionado. Id se completará automáticamente para usted:

 using (var context = new MyContext()) { context.MyEntities.Add(myNewObject); context.SaveChanges(); int id = myNewObject.Id; // Yes it's here }

El marco de la entidad de forma predeterminada sigue cada INSERT con SELECT SCOPE_IDENTITY() cuando se utilizan Id generados automáticamente.

over 4 years ago · Santiago Trujillo Denunciar

0

Había estado usando la respuesta de Ladislav Mrnka para recuperar con éxito los Id cuando usaba Entity Framework, sin embargo, estoy publicando aquí porque lo había estado usando mal (es decir, usándolo donde no era necesario) y pensé que publicaría mis hallazgos aquí en- caso la gente busca "solucionar" el problema que tuve.

Considere un objeto Pedido que tiene una relación de clave externa con el Cliente. Cuando agregué un nuevo cliente y un nuevo pedido al mismo tiempo, estaba haciendo algo como esto;

 var customer = new Customer(); //no Id yet; var order = new Order(); //requires Customer.Id to link it to customer; context.Customers.Add(customer); context.SaveChanges();//this generates the Id for customer order.CustomerId = customer.Id;//finally I can set the Id

Sin embargo, en mi caso, esto no era necesario porque tenía una relación de clave externa entre el cliente.Id y el pedido.Id del cliente

Todo lo que tenía que hacer era esto;

 var customer = new Customer(); //no Id yet; var order = new Order{Customer = customer}; context.Orders.Add(order); context.SaveChanges();//adds customer.Id to customer and the correct CustomerId to order

Ahora, cuando guardo los cambios, la identificación que se genera para el cliente también se agrega al pedido. No necesito los pasos adicionales

Soy consciente de que esto no responde a la pregunta original, pero pensé que podría ayudar a los desarrolladores que son nuevos en EF a usar en exceso la respuesta más votada para algo que puede no ser necesario.

Esto también significa que las actualizaciones se completan en una sola transacción, lo que potencialmente evita los datos huérfanos (ya sea que se completen todas las actualizaciones o ninguna).

over 4 years ago · Santiago Trujillo Denunciar

0

Debe volver a cargar la entidad después de guardar los cambios. Porque ha sido alterado por un activador de base de datos que EF no puede rastrear. Entonces, necesitamos volver a cargar la entidad desde la base de datos,

 db.Entry(MyNewObject).GetDatabaseValues();

Entonces

 int id = myNewObject.Id;

Mire la respuesta de @jayantha en la siguiente pregunta:

¿Cómo puedo obtener la identificación de la entidad insertada en Entity Framework cuando uso defaultValue?

Mirar la respuesta de @christian en la siguiente pregunta también puede ayudar:

Entity Framework Actualizar contexto?

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda