A Atualização do Nibernate sobre a propriedade única atualiza todas as propriedades no SQL
-
03-07-2019 - |
Pergunta
Estou realizando uma atualização padrão no Nibernate para uma única propriedade. No entanto, ao comprometer a transação, a atualização do SQL parece definir todos os campos que eu mapeei na tabela, mesmo que eles não tenham alterado. Certamente isso não pode ser um comportamento normal no Nibernate? Estou fazendo algo errado? Obrigado
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var singleMeeting = session.Load<Meeting>(10193);
singleMeeting.Subject = "This is a test 2";
transaction.Commit();
}
}
Solução
Este é o comportamento normal. Você pode tentar adicionar dynamic-update="true"
à sua definição de classe para substituir esse comportamento.
Outras dicas
Nós iremos. Sim, esse é um comportamento normal para o Nibernate. Você pode usar o atributo gerado para suas propriedades para alterar o comportamento. Detalhes sobre Blog de Ayende.
Por que esse padrão é porque, com a dinâmica, você não recebe seu plano de consulta em cache. E geralmente você não se importa que envie mais alguns bytes sobre a conexão de rede de alta velocidade entre o servidor de aplicativos e o banco de dados. A menos que você esteja economizando seqüências longas onde essa configuração é perfeitamente apropriada.