Bug con SCOPE_IDENTITY() en Sql Server 2005/2008
Bueno, la historia es ya conocida, cuando trabajamos con NHibernate no es conveniente usar identity, hay cosas de NHibernate que no se aprovechan. Cuando se usa Identity y se realiza un Save(), NHibernate tiene que forzar el INSERT para obtener el Id, por lo tanto el concepto de Unidad de trabajo no es explotado.
Ahora sumémosle este bug, que la gente del SQL Server team después de evaluar dice: ?Desafortunadamente, después de evaluar las opciones para solucionar el problema, llegamos a la conclusión que no podemos arreglarlo para Sql Server 2008?
Conclusión
Si usas NHibernate+SQL Server, no te aconsejo identity como generador de identificadores en producción. Una muy buena opción que tiene muchas bondades es usar como generador a hilo.
6 Responses to Bug con SCOPE_IDENTITY() en Sql Server 2005/2008
Leave a Reply Cancel reply
-
Categories
- .NET
- ActiveRecord
- agil
- Alt.Net
- AOP
- Asp.net MVC
- blog
- C#
- codegeneration
- cosas interesantes
- db4o
- db4o-analyzer
- DLR
- enterprise-library
- expresiones regulares
- General
- Hibernate
- IoC
- it
- Java
- LINQ
- Linux
- Lucene
- Mocking
- Mono
- monosms
- MVC
- NAnt
- NHibernate
- NHibernate.Burrow
- NHibernate.Contrib
- NHibernate.Validator
- noticias
- O/R Mapping
- Open Source
- patrones
- personal
- podcast
- programación
- Redes Neuronales
- Refactoring
- regex
- Scrum
- Security
- Shards
- Sin Categoría
- Spring
- SqlServer
- Testing
- tips
- Tool
- tutorial
- Ubuntu
- uNHAddIns
- video
- Virtualización
- Visual Basic.Net
- Visual Studio
- VMWare
- Web
-
Articles
- June 2011
- May 2011
- November 2009
- October 2009
- April 2009
- March 2009
- February 2009
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- March 2006
- February 2006
- December 2005
- November 2005
- October 2005
-
Meta





Hola soy nuevo utilizando NHibernate, y poco a poco voy profundizando en él. Cada vez me gusta más, hasta el punto que estoy seriamente decidido a comenzar un proyecto con esta tecnología.
Sin embargo, me sorprende tu post. Recomiendas no utilizar identity con NHibernate y SQL Server, y lo dices como si fuera algo más o menos conocido. Entiendo el problema que planteas, pero …
¿Cúal sería en tu opinión la mejor manera de utilizar NHibernate con Sql Server? La verdad es que Identity es francamente útil, estoy haciendo pruebas con S#arp Architecture y parece que funciona bien….
¿Qué me recomiendas?
gracias de antemano.
Hola Fernando,
Dale una leida esto:
http://nhforge.org/blogs/nhibernate/archive/2009/03/20/nhibernate-poid-generators-revealed.aspx
Por sobre todo, donde dice: ORM Style Generators
Gracias por la información Dario, muy útil.
Seguiremos probando NHibernate. Cada vez nos gusta más.
estoy trabajando en un proyecto con NHibernate 2.0 y SQL Server 2008…..
es posible hacer un merge (para insertar y actualizar) y rescatar el SCOPE_IDENTITY()?….
ahora, los identificadores son identity…..
Inicie un proyecto con .net 2008, nhibernate 2.0 y sqlserver 2008 de “64 bits”. Esto funcionaba ok hasta que instale el
Microsoft SQL Server Management Studio 2008 y luego de un rato de trabajar normalmente empezaron a aparecer problemas con el dialecto. Estamos usando “NHibernate.Dialect.MsSql2000Dialect”, tambien probamos con
<!–NHibernate.Dialect.SQLServerDialect
–>
Necesitamos saber con que dialecto tenemos que trabajar y como sería la cadena de coneccion en el hibernate.cfg.xml. Muchas gracias.