public class MyVersion : NHibernate.UserTypes.IUserVersionType { public object Next(object current, ISessionImplementor session) { if (current==null) { return 0; } return ((int)current) + 1; } }
O código que nhibernate gera é o sql mostrado, como você pode ver o parâmetro p0 foi resolvido com a classe e o método NEXT, mas no parâmetro p6 ele faz a comparação com null o que está errado, foi fazer [é nulo] porque valor não pode ser comparado a nulo
UPDATE table SET OptimisticLockField = @p0, a = @p1, b = @p2, c = @p3, d = @p4 WHERE e = @p5 AND OptimisticLockField = @p6; @p0 = 0 [Type: Int32 (0:0:0)], @p1 = '851' [Type: AnsiString (8000:0:0)], @p2 = 2015-09-23T00:00:00.0000000 [Type: DateTime (0:0:0)], @p3 = '12' [Type: AnsiString (8000:0:0)], @p4 = 2015-09-23T12:53:24.0000000 [Type: DateTime (0:0:0)], @p5 = 108 [Type: Int64 (0:0:0)], @p6 = NULL [Type: Int32 (0:0:0)]
--
André Silva Rodrigues
--
Você recebeu essa mensagem porque está inscrito no grupo "NHibernate-Br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nhibernate-b...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/nhibernate-br/2b2b35bb-f3f4-4992-9772-305a6d238053%40googlegroups.com.