none
Reordenar uma Coluna com Update Utilizando linq to entity RRS feed

  • Pergunta

  • Olá pessoal sou iniciante e preciso muito resolver este problema!

    É o seguinte: eu tenho uma tabela com duas colunas  |Ordem|IdTecnico|  a coluna ordem se encontra ordenada '1,2,3,4....' porém não é identity; 

    quando for solicitada uma ordem de serviço o primeiro técnico que estiver na fila será deletado então esta fila (coluna Ordem) começará do n° 2 em diante certo?!

    O que eu preciso é ordenar a coluna |ordem| novamente a partir do 1 na qual antes estava. e assim por diante. ou seja, realizar um update, estou utilizando linq to entity vs 2012

    Espero que entendam o que eu quis dizer.

    Desde já obrigado!! 

    segunda-feira, 9 de julho de 2012 19:20

Respostas

  • Olá Sergio,
    Tudo beleza?

    Não sei preocupe com o tempo para responder. Estamos sempre por aqui.

    Sim, quando me refiro ao ADO.Net puro estou realmente me referindo a plataforma e vc mesmo escrever seus comandos SQL.

    Acredito que seu problema pode ser resolvido de maneira mais simples. Vc pode ao consultar, criar uma coluna virtual que apresente a posição daquele registro na tabela, isto é, criar uma coluna virtual que atribua um número sequêncial para a linha. Isso fará com que vc não precise atualizar os registros de sua tabela.

    Tente algo como:

    SELECT ROW_NUMBER() OVER (ORDER BY Ordem) AS Row, Ordem, IdTecnico FROM SUATABELA

    []s!

    Referência: http://www.openwinforms.com/row_number_to_sql_select.html


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta sergio pb junior quinta-feira, 12 de julho de 2012 17:59
    quarta-feira, 11 de julho de 2012 20:34
    Moderador

Todas as Respostas

  • Olá Sérgio,
    Tudo beleza?

    Isso que vc quer fazer geralmente não é indicado, pois vc estará modificando o valor da primary key de um registro.

    E isso, não é suportado pelo Entity Framework, pois o EF se baseia no valor da primary key para realizar seu UPDATE.

    Então, como exemplo, imagine o seguinte cenário: sua entidade de ID igual a 2 será atualizado para 1, quando vc atribuir o valor da sua propriedade ID para 1, o Entity Framework irá procurar atualizar a entidade de ID 1, e não a entidade de ID 2, que deveria ter seu ID atualizado.

    Acredito, que neste caso, o melhor é procurar uma solução que não utilize uma ferramenta de mapeamento objeto relacional. Acredito que o jeito é utilizar o bom e velho ADO.Net puro.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 10 de julho de 2012 02:03
    Moderador
  • Olá Fernando,

    Me desculpe por demorar a responder, é que eu estava fazendo algumas coisas aqui no setor. Desde já eu quero agradecer a sua explicação que realmente foi muito útil e esclarecedora porém como já disse sou iniciante e queria entender sobre esse ADO.NET puro,  não seria a própria plataforma onde se utiliza as linguagens de programação como VB, C#, J#, F#...etc ? ? ? 

     

    quarta-feira, 11 de julho de 2012 20:08
  • Olá Sergio,
    Tudo beleza?

    Não sei preocupe com o tempo para responder. Estamos sempre por aqui.

    Sim, quando me refiro ao ADO.Net puro estou realmente me referindo a plataforma e vc mesmo escrever seus comandos SQL.

    Acredito que seu problema pode ser resolvido de maneira mais simples. Vc pode ao consultar, criar uma coluna virtual que apresente a posição daquele registro na tabela, isto é, criar uma coluna virtual que atribua um número sequêncial para a linha. Isso fará com que vc não precise atualizar os registros de sua tabela.

    Tente algo como:

    SELECT ROW_NUMBER() OVER (ORDER BY Ordem) AS Row, Ordem, IdTecnico FROM SUATABELA

    []s!

    Referência: http://www.openwinforms.com/row_number_to_sql_select.html


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta sergio pb junior quinta-feira, 12 de julho de 2012 17:59
    quarta-feira, 11 de julho de 2012 20:34
    Moderador
  • Olá fernando,

    Muito obrigado pela ideia, adiantou bastante no processo aqui.

    Valeu! fica com Deus!!!

    quinta-feira, 12 de julho de 2012 18:03