none
Secuencia con Entity Framework RRS feed

  • Pregunta

  • Buenas quisiera saber si es posible pasarle como valor al Id de una tabla una secuencia y como seria la sintaxis para hacerlo. Estoy usando EF 6 y visual studio 2017 con C#
    lunes, 23 de julio de 2018 19:37

Respuestas

  • hola

    >>si es posible pasarle como valor al Id de una tabla una secuencia

    para realizar que operacion ? una query que devuelva datos o un insert

    si es para insertar va a depender si el mapping de esa entidad lo defines como autonumerico (identity), si es asi no vas a poder definirlo porque es la db quien controla el secuencia

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de julio de 2018 19:53
  • hola

    >>Ahora aqui sin autonumerico debo pasarle el campo ID .

    claro

    vas a tener que realizar un select recuperando el max

    var maxId = cliente.Clientes.Max(x=>x.Id);

    entonces le sumas uno y lo asignas a le entidad cliente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de julio de 2018 20:52
  • Mmmm bueno queria que fuera secuencia yo le cree una secuencia a la tabla que se llama consecutivo con "create sequence consecutivo as int etc, etc" pero creo que eso del max id tambien me serviria al final seria secuencial tambien y el transaction scope me ayuda con la concurrencia. Pero si creo que eso quiza funcione. Gracias .
    lunes, 23 de julio de 2018 20:59

Todas las respuestas

  • hola

    >>si es posible pasarle como valor al Id de una tabla una secuencia

    para realizar que operacion ? una query que devuelva datos o un insert

    si es para insertar va a depender si el mapping de esa entidad lo defines como autonumerico (identity), si es asi no vas a poder definirlo porque es la db quien controla el secuencia

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de julio de 2018 19:53
  • Hola leandro gracias por la respuesta. Lo que quiero hacer es un insert anteriormente estaba usando el identity como autonumerico pero ya lo cambie y le quite ese autonumerico. Normalmente en un insert uno pasa algo como insert into tabe (next value for nombresecuencia, ' otro valor','otro valor '  ) values etc. El insert lo estaba haciendo asi: 

      using (var sco=new TransactionScope(TransactionScopeOption.Required))
                    {
                    

                        using (var cliente = new salvadorEntities1())
                        {





                            Cliente c = new Cliente()
                            {
                                //Ahora aqui sin autonumerico debo pasarle el campo ID . Como  haria para pasarle lasecuenci
                                Direccion = richTextBox1.Text.ToUpper(),
                                Razon = textBox7.Text.ToUpper(),
                                Email = textBox8.Text.ToUpper(),
                                NIT = textBox3.Text.ToUpper(),
                                GIRO = textBox5.Text.ToUpper(),
                                NCR = textBox4.Text.ToUpper(),
                                DUI = textBox2.Text.ToUpper()


                            };
                            scope = c.Id;
                            cliente.Clientes.Add(c);
                            cliente.SaveChanges();
                             scope_identity_id = c.Id;
                           
                        }

                        
                        sco.Complete();

                      

                    }

    antes no le pasaba el id porque era autonumerico pero ahora tengo que pasarle valor al campo id porque ya no es autonumerico como haria para pasarle ahi la secuencia . Agradezco la ayuda.

    lunes, 23 de julio de 2018 20:47
  • hola

    >>Ahora aqui sin autonumerico debo pasarle el campo ID .

    claro

    vas a tener que realizar un select recuperando el max

    var maxId = cliente.Clientes.Max(x=>x.Id);

    entonces le sumas uno y lo asignas a le entidad cliente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de julio de 2018 20:52
  • Mmmm bueno queria que fuera secuencia yo le cree una secuencia a la tabla que se llama consecutivo con "create sequence consecutivo as int etc, etc" pero creo que eso del max id tambien me serviria al final seria secuencial tambien y el transaction scope me ayuda con la concurrencia. Pero si creo que eso quiza funcione. Gracias .
    lunes, 23 de julio de 2018 20:59