Lilypie Primer PicLilypie Primer Ticker

lunes, 25 de febrero de 2008

NHibernate.Timestamp != SQLServer.Timestamp

Al intentar utilizar el control de concurrencia, mediante las etiquetas <timestamp> o <version> de NHibernate junto con el tipo Timestamp de SQL Server, nos encontramos con un mensaje como este:

"Could not cast the value in field ts_times4_ to the Type TimestampType. Please check to make sure that the mapping is correct and that your DataProvider supports this Data Type."

debido a que el tipo Timestamp de SQL Server es recibido como un byte[] en el .NET Framework y no es compatible con los tipos que NHibernate usa para el control de las versiones. (Aunque la documentación de NHibernate diga lo contrario)

Luego de algunas horas intentando resolver este problema encontré un artículo en CodeProject q resuelve el problema.

http://www.codeproject.com/KB/dotnet/OptLocking_PrefixTable.aspx

Ojala les sea de utilidad

No hay comentarios.: