Recuperar el Identity Linq to Sql

17/04/2010 - 01:22 por César Muñoz | Informe spam
Buenas tardes amigos del Foro.
Espero me puedan aydar.
Requiero insertar registros en dos tablas de la Base de Datos donde una
tiene los registros resumen y la otra los detalles.
Por ejemplo.
Tabla FacturaResumen
IdF (Identity) IdCliente FechaPedido

5050 9999 01/04/2010

Tabla FacturaDetalle
IdF CodigoProducto Cantidad Valor

5050 1 5 1000
5050 89 4 2000
5050 95 2 500

Necesito grabar varias facturas y con el IdF creado al insertar el registro
en la tabla FacturaResumen necesito
crear los registros con el mismo IdF en FacturaDetalle.
Los registros los leo desde una tabla excel.
El problema que no he podido resolver con Linq to Sql es averiguar el IdF de
la tabla FacturaResumen, para los registros de FacturaDetalle. Esto sin
haber dado el comando SubmitChanges (linq) de varias facturas con varios
items.
Todo en una sola secuencia, y grabar todo o nada.

Gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Leandro Tuttini
19/04/2010 - 16:09 | Informe spam
hola

hasta donde pude ver con linq to sql es que tienes que haces es
relacionar las entidades

o sea si creas una entidad de tu encabezado, luego le deberias agregar
a este la coleccion de detalles, si lo ahces al momento de hacer el
SubmitChanges , solo deberia generar el id y usarlo como relacion en
los registros hijos

FacturaResumen resumen = new FacturaResumen()

resumen.Detalles.Add(new FacturaDetalle());
resumen.Detalles.Add(new FacturaDetalle());

db.Resumen.Add(resumen)

db.SubmitChanges()

en este link explica esto que comento
http://www.hookedonlinq.com/LinqToS...rview.ashx


saludos
Respuesta Responder a este mensaje
#2 César Muñoz
19/04/2010 - 17:31 | Informe spam
Gracias Leandro, por responder.

He revisado el tema y para hacer esto ha sido necesario grabar el primero
registro maestro (InsertOnSubmit) para obtener el Consecutivo anutogenerado
y grabar los hijos.

Atentamente,


César
Respuesta Responder a este mensaje
#3 Jose A. Fernandez
22/04/2010 - 06:54 | Informe spam
Hola Cesar

Solamente agrego que toda la factura y la lineas deben estar en la
misma transaccion
y en este caso de LINQ 2 SQL ... si abres el contexto hasta el
SubmitChanges estan en una trasaccion de la db

Lo que no logro entender es porque necesitas el IDENTIFICADOR del
"maestro" porque como te comenta Leandro tendria que funcionarte
En POO (programacion orientada a objetos) los ID (identificadores de
las tablas) no serian necesarios para nuestra codificacion.


______________________
Jose A. Fernandez
blog: http://geeks.ms/blogs/fernandezja



On 19 abr, 12:31, "César Muñoz"
wrote:
Gracias Leandro, por responder.

He revisado el tema y para hacer esto ha sido necesario grabar el primero
registro maestro (InsertOnSubmit) para obtener el Consecutivo anutogenerado
y grabar los hijos.

Atentamente,

César
Respuesta Responder a este mensaje
#4 César Muñoz
26/04/2010 - 23:44 | Informe spam
Gracias Jose, por tu respuesta.

Realicé las pruebas con la transaccionalidad, y efectivamente fue necesario
grabar primero el maestro (SubmitChanges) para crear los hijos con el
identificador.

Lo que no encontrá fue como hacer para encontrar el Id del maestro antes del
SubmitChanges para realizar todo en una transacción.

Atentamente,

Cesar Muñoz
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida