UPDATE ENTITYFRAMEWORK 5

MESTRE 15/09/2015 12:15:44
#451405
Galera estou começando a estudar a possibilidade de utilizar o Entity Framework em meu projeto, o Insert foi tranquilo de pegar e está funcionando..

O problema está no UPDATE, estou utilizando o modelo DBFirst não sei como funciona e não estou conseguindo realizar update dos campos no banco e ja tentei de várias formas:

INSERT:
  Try

Dim ctx As New testeEntities3()
Dim cliente As New coleta()

cliente.OS = TextBox3.Text
cliente.campo1 = TextBox2.Text
cliente.campo2 = TextBox1.Text

ctx.coleta.Add(cliente)
ctx.SaveChanges()

Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try


UPDATE que não estou conseguindo fazer e não entendi muito bem:
        Using ctx As New testeEntities3()
Dim cliente As New coleta()

Dim xOS = (From p In ctx.coleta Where p.OS = TextBox3.Text).SingleOrDefault
cliente.OS = TextBox3.Text
cliente.campo1 = [Ô]200[Ô]
cliente.campo2 = [Ô]220[Ô]
ctx.SaveChanges()
End Using



JABA 15/09/2015 12:40:42
#451406
Resposta escolhida
Para atualizar você terá que encontrar um objeto em ctx.coleta e fazer as modificações, conforme abaixo. Se essa consulta não tiver trazendo ninguém, então irá gerar um erro, pois a variável [Ô]cliente[Ô] ficaria vazia e não teríamos como fazer atribuições a ela.

             Using ctx As New testeEntities3()
Dim cliente = (From p In ctx.coleta Where p.OS = TextBox3.Text).SingleOrDefault
cliente.OS = TextBox3.Text
cliente.campo1 = [Ô]200[Ô]
cliente.campo2 = [Ô]220[Ô]
ctx.SaveChanges()
End Using

MESTRE 15/09/2015 13:32:31
#451408
Citação:

:
Para atualizar você terá que encontrar um objeto em ctx.coleta e fazer as modificações, conforme abaixo. Se essa consulta não tiver trazendo ninguém, então irá gerar um erro, pois a variável [Ô]cliente[Ô] ficaria vazia e não teríamos como fazer atribuições a ela.

             Using ctx As New testeEntities3()
Dim cliente = (From p In ctx.coleta Where p.OS = TextBox3.Text).SingleOrDefault
cliente.OS = TextBox3.Text
cliente.campo1 = [Ô]200[Ô]
cliente.campo2 = [Ô]220[Ô]
ctx.SaveChanges()
End Using



Obrigado pela resposta, porém estou carregnado minha variável cliente com os dados

Deixa eu ver se eu entendi, de alguma forma eu tenho que trazer meus dados pro Model.edmx alterar e comitar as alterações com savechanges é isso?? se sim
como trago os dados da base de dados para a Model?

Como devo proceder para realizar o Update?
JABA 15/09/2015 13:37:48
#451409
Citação:

Using ctx As New testeEntities3()



Quando você cria a instância do seu modelo e acessa a coleção de objetos contido nele - no caso, o ctx.coleta - os dados são trazidos do banco de dados automaticamente, daí é só fazer um pesquisa, conforme coloquei no exemplo anterior, fazer as alterações, e depois salvar.
MESTRE 15/09/2015 13:45:52
#451411
Citação:

:
Using ctx As New testeEntities3()

Quando você cria a instância do seu modelo e acessa a coleção de objetos contido nele - no caso, o ctx.coleta - os dados são trazidos do banco de dados automaticamente, daí é só fazer um pesquisa, conforme coloquei no exemplo anterior, fazer as alterações, e depois salvar.



Fiz assim

        Using ctx As New testeEntities3()
Dim cliente As New coleta()

cliente = (From p In ctx.coleta Where p.OS = TextBox3.Text).SingleOrDefault
cliente.OS = TextBox3.Text
cliente.campo1 = [Ô]200[Ô]
cliente.campo2 = [Ô]220[Ô]
ctx.SaveChanges()
End Using


Consegui!

obrigado!! era mais simples do que eu pensava hahaha
JABA 15/09/2015 13:51:50
#451413
Você poderia usar o LINQ para isso, conforme abaixo. Você só teria que tomar o cuidado de tratar o retorno quando não fosse encontrado ninguém nessa pesquisa, pois daria erro quando fosse feito uma atribuição.

Dim cliente = (From p In ctx.coleta Where p.OS = TextBox3.Text).SingleOrDefault
MESTRE 15/09/2015 13:53:47
#451414
Consegui JABA graças a seu auxílio estava fazendo errado..
agora só mais uma dúvida pra eu encerrar o tópico..

Pra que serve o Lambda ?
JABA 15/09/2015 13:55:32
#451415
http://www.macoratti.net/11/06/c_lbda.htm
MESTRE 15/09/2015 14:13:38
#451417
Obrigado JABA pelo auxílio!!

Tópico encerrado , respostas não são mais permitidas