none
Dependencias Linq To SQL RRS feed

  • Pregunta

  • Hola a tod@s,

    Si bién he encontrado la forma de hacer un insert con linq to SQL, cómo se debe hacer para hacer un insert en una tabla que hereta de una base? Es decir, tengo una tabla padre con un id y tablas hijas con el mismo id. Al hacer insert en la tabla padre, deco hacer el insert en la tabla hija con el mismo id:

    Tabla padre id autonumérico

    Insert a la tabla padre y nos dá cómo resultado el id 25

    recojer el 25 (supongo que habrá alguna función par recojerlo?) y hacer el insert a la tabla hija con éste id

     

    Por otro lado, en el diseño del dbml, debo poner relaciones o se tienen que poner todas las tablas sin ellas?

    Cómo se ponen, por ejemplo, la relaciones de n a 1 y de m a n? Debo hacer una clase por cada tabla para hacer el insert y hacerlo manual o el linq to sql ya se lo hace?

    Saludos y muchas gracias

     

    • Cambiado Enrique M. Montejo lunes, 7 de noviembre de 2011 13:26 consulta LINQ (De:Lenguaje VB.NET)
    domingo, 6 de noviembre de 2011 16:17

Todas las respuestas

  • Hola de nuevo:

    Recuperar el último registro l o tengo:

    Dim db As New NorthwindDataContext 
    Dim prod As New Product prod.ProductName = "cheese!" 
    db.Products.InsertOnSubmit(prod) db.SubmitChanges() MessageBox.Show(prod.ProductID)

    Me falta el resto.

     

    Gracias

    domingo, 6 de noviembre de 2011 16:31
  • cómo se debe hacer para hacer un insert en una tabla que hereta de una base?

    partamos de la base que en una herencia si lo modelas en dos tablas distintas la relacion es 1 a 1, por lo tanto el campo idproducto sera unico en la clase base

    sabiendo esto es directo, solo crea la instancia d ela clase hija, la cual contara tambien con als propeidades de a clase base, y al realziar el submit deberia insertar en ambas tabla

    a lo que voy es que no creas una instancia de la clase base, para insertar, sino que lo haces de la clase hija, completanto als propeidades concreta de la especializacion mas los que defina la base

     

    igual con el ejemplo que ahs puesto de producto no veo ninguna herencia que puedas aplicar? estas seguro que es herencia lo que intentas implementar o es una relacion entre dos tabla simples

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 6 de noviembre de 2011 17:23
  • Gracias Leandro,

    Lo del ejemplo de recuperar el id insertado no es más que un ejemplo. En el caso que me ocupa seria

    Tabla padre --> Persona, con su id cómo clave

    Tabla hijo --> Camarero, con el id de persona cómo clave

    Hago el insert y para recuperarlo:

    Dim db As New BBDDDataContext 
    Dim cam As New Camarero
    cam.Nombre = "NombreCamarero"
    db.Camarero.InsertOnSubmit(cam) db.SubmitChanges() MessageBox.Show(cam.id)

    Saludo y muchas gracias

    domingo, 6 de noviembre de 2011 17:47
  • clero de esa forma no te funciona ?

    es lo que comentaba si camarero hereda de persona el id que define camarero es el mismo por la relacion de las tablas

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 6 de noviembre de 2011 17:51
  • Me da un error y no entiendo porqué...

    Cuando trato de añadir la herencia en el dbml me dice que :

    Error 3 DBML1066: El elemento Type 'Cambrer' es un subtipo y no puede contener la columna de clave principal 'idPersona'. 0 0

    Gracias

    domingo, 6 de noviembre de 2011 18:12
  • una planteo

    si o si cada clase hija debe estar en una tabla diferente ?

    lo planteo porque podrias tomar uan camino distinto en donde la clase padre y las hijas se inserten en una unica tabla, la cual cuante con un campo discriminador que diferencie cada entidad concreta

    creo que este camino es mucho asm optimo, apunto exactamente a esto

    como veras la tabla es unica, con un campo "Type" que permite definri que clase concreata se especifica

    cereo que este camino te traera mejores resultados, no solo en el modelo de objetos, sino tambien en el relacional en tu db

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 6 de noviembre de 2011 19:02