Usuário com melhor resposta
Reordenar uma Coluna com Update Utilizando linq to entity

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!!
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
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 -
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 ? ? ?
-
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
-