2010-09-08 96 views
8

Estoy usando un formulario web MVC para insertar un registro en una base de datos con varios subregistros. En mi código subyacente, primero estoy creando un nuevo registro principal usando dataRepository.Add (xx). Ahora necesito agregar 5 subregistros que necesitan el ID del registro recién creado. ¿Cómo puedo recuperar eso?ASP.NET MVC Obtener ID del último registro agregado

+2

cómo se implementa el repositorio de datos? Linq a las entidades? Linq a SQL? Conjuntos de datos escritos Necesita código – villecoder

+1

¿No es MVC Webform un oxímoron? – Martin

+2

Solo una observación: ¡No use archivos de código subyacente con ASP.NET MVC! – davehauser

Respuesta

23

xx Suponiendo es su modelo y su clave primaria es Id se puede obtener el ID de su registro insertado de esta manera:

// at this point xx.Id == null 
db.XX.AddObject(xx); 
db.SaveChanges(); 
// now: xx.Id > 0 
int id = xx.Id; 
1

Probablemente deberías enviar los 5 registros más el principal hasta tu capa de datos, realizando cualquier validación en el camino en tu capa de negocios. Luego, dependiendo de la implementación de su DL, guarde el registro principal, devuelva el ID, establezca el ID padre en los subregistros y guárdelos. Hazlo todo en una sola transacción y deberías estar bien.

Proporcione más información sobre su capa de acceso a datos.

Si usa el servidor MS SQL, debe usar Scope_Identity() dentro de su procedimiento almacenado para obtener el último valor de identidad insertado en una columna de identidad. Ver este MSDN article

Si se utiliza NHibernate se agregan dentro de la misma sesión y NHibernate se encarga de generar el SQL responsable de insertar los registros con los ID correcta.

2

Si está utilizando un ORM como Entity Framework, debe poder crear el registro y los registros asociados, vincularlos agregando los registros asociados en una colección en el objeto principal o configurarlos de alguna manera y luego llamar al guardar método en el contexto. Esto hará todos los enlaces con los identificadores, etc. para ti.

¿Cómo está haciendo acceso a los datos?

Cuestiones relacionadas