Pergunta

Eu estou usando Linq2Sql para atualizar uma linha de dados, mas uma vez eu alterar os valores Eu pesquisei esse problema antes e encontrou os seguintes razões possíveis:

  • Entidade não foi alterado de modo a não atualização ocorre
  • Entidade está faltando uma chave primária, mas não haverá atualização

Nenhum desses é o caso na minha situação.

Eu tenho o meu PK na minha classe e a tabela.O GetChangeSet() do contexto de dados indica que há pelo menos 1 atualização.

Os únicos problemas que eu vejo é que a partir do contexto de dados de log é que não há instrução update é gerado.

Alguém tem uma idéia de que o problema poderia ser.

Aqui está um exemplo de código:

using(context db=new context())
{
 db.Log=new System.IO.StreamWriter(sample){AutFlush=true};
 MyObject obj=db.MyTable.SingleOrDefault(row=>Email==email);
 if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   System.Data.Linq.ChangeSet set=db.GetChangeSet();
   db.SubmitChanges();
 }
}
Foi útil?

Solução 2

Eu encontrei o problema.Para quem estiver interessado.

Eu previoulsy adicionado validação lógica para meu DataContext Clas.Por exemplo se meu nome de Tabela "Produto" que eu adicionei a validação parcial do método "UpdateProduct".

No entanto, eu esquecido de dizer o LINQ to SQL para continuar com as alterações para o banco de dados.Assim, ele seria validar, em seguida, fazer nada porque eu não continuar o código.

Para quem precisa dele, para fazer isso corretamente, eu precisava chamar "ExecuteDynamicUpdate" quando a lógica passado.

Exemplo de solução atualizada:

partial void UpdateObj(Obj instance)
{
  if(instance.Field==null)
  {
     thow new NotImplementedException();
  }
  //Added missing code continuation
  this.ExecuteDynamicUpdate(instance);
}

O ScottGu Blog me ajudou muito...http://weblogs.asp.net/scottgu/linq-to-sql-part-4-updating-our-database

Outras dicas

Você pode tentar isso

if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   db.MyTable.InsertOnSubmit(obj);
   db.SubmitChanges();

   System.Data.Linq.ChangeSet set = db.GetChangeSet();
 }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top