Pergunta

Há alguma razão algo como isso não iria funcionar?

Esta é a lógica que tenho usado muitas vezes para atualizar um registro em uma tabela com LINQ:

 DataClasses1DataContext db = new DataClasses1DataContext();
 User updateUser = db.Users.Single(e => e.user == user);
 updateUser.InUse = !updateUser.InUse;
 db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true };
 db.SubmitChanges();

(updateUser.InUse é um campo bit)

Por alguma razão ele não está funcionando. Quando eu verificar o linq.log é completamente em branco.

Pode haver um problema com a minha .dbml? Outras mesas parecem funcionar bem, mas eu tenho comparado propriedades na .dbml e todos eles jogo.

É como se o db.SubmitChanges(); não detecta nenhuma atualização a ser exigido.

Foi útil?

Solução

A tabela pode não ser atualizado corretamente porque não tinha a chave primária. (Na verdade, tinha a coluna, mas a restrição não foi copiado quando eu fiz um SELECT INTO minha mesa dev). A classe DataContext requer uma chave primária para atualizações.

Outras dicas

É a propriedade InUse um "normal" na medida em que LINQ está em causa? (Por exemplo, não é gerada automaticamente ou qualquer coisa funk assim?)

Como alternativa, eu não acho que é um Nullable é, com um valor atual de null? Se assim for, a sua linha de atualização não está realmente fazendo alguma coisa -. Para Booleans anuláveis, null = null

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top