tutorial net mvc framework first español code asp asp.net entity-framework-4.1 detailsview

asp.net - net - Obtener ID de registro en Entity Framework después de insertar



entity framework tutorial español (4)

Estoy desarrollando una aplicación ASP.net usando Entity Framework. Estoy usando DetailsView para insertar datos en la base de datos. Hay una tabla como Client y su clave principal es client_id . client_id es generado automáticamente por la base de datos. Necesito obtener client_id generado automáticamente después de insertar un registro en la tabla del Client y asignarlo a un campo oculto para uso futuro.

Busqué sobre esto y encontré muchas soluciones. Pero no sé cómo usarlos ya que soy nuevo en asp.net. Descubrí que Entity Framework rellena automáticamente los objetos de negocios con los valores generados por la base de datos después de llamar a SaveChanges() . Mi pregunta es ¿dónde debería llamar a esto en mi clase parcial? Cuál es el evento ?

Estoy usando DetailsView con EntityDataSource y enlazando EntityDataSource directamente con Entity Model, por lo que no estoy creando objetos para insertar datos.


Esto es lo que estoy buscando.

en clase parcial

protected void clientDataSource_OnInserted(object sender, EntityDataSourceChangedEventArgs e ) { int newPrimaryKey = ((Client)e.Entity).ClientId; Debug.WriteLine(" Client ID is " + newPrimaryKey); }

y agregado debajo de la línea en EntityDataSource en la página aspx.

OnInserted="clientDataSource_OnInserted"


Gracias, pasé 3 días buscando y buscando resultados complicados, ¡pero esta solución es brillante! Aquí está en vb.net:

Protected Sub dvArticulos_ItemInserted(sender As Object, e As EntityDataSourceChangedEventArgs) Handles EntityDataSource1.Inserted Dim last_Serie As Long = DirectCast(e.Entity, articulos).Serie Session("Articulo") = last_Serie End Sub


Tras la llamada a _dbContext.SaveChanges() , la entidad se actualizará automáticamente con su nuevo valor de campo de identidad.

El siguiente código supone que el nombre del contenedor de entidad de Entity Framework es MyEntities, y la tabla de clientes de su base de datos tiene al menos los dos campos siguientes:

client_id int identity client_name varchar(25)

Su código podría verse algo como esto:

// Establish DbContext private readonly MyEntities _dbContext = new MyEntities(); // Create new client table entity and initialize its properties var clientEntity = new Client { client_name="MyCo" }; // Add it to the ORM''s collection of Client entities _dbContext.Clients.Add(clientEntity); // Save the new entity to the database _dbContext.SaveChanges(); // Return the identity field from the existing entity, // which was updated when the record was saved to the database return clientEntity.client_id;


Una vez que haya insertado la entidad, debe actualizarse para que la propiedad que se asigna a la clave primaria en la base de datos tenga el nuevo valor de PK.

Al igual que MyObject.Id le dará la nueva identificación