Estás indicando optimistic-lock="dirty" en lugar de dejar el default, que es
"version".
Diego
2010/8/24 Diego Perlman <[email protected]>
> Diego ahora lo pude agregar...
>
> Te incluyo la clase y el mapping...
>
> El tema es que cuando veo el SQL que genera NH no pregunta en el WHERE
> por el campo VERSION...
>
> Mapping
>
> <?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="AC"
> namespace="AC.Domain">
> <class name="Banco" table="bancos" optimistic-lock="dirty"
> dynamic-update="true">
> <id name="Id" column="idBanco">
> <generator class="native" />
> </id>
> <version name="Version" column="Version" type="integer"
> unsaved-value="0"></version>
> <property name="Nombre" column="nombre" type="System.String"
> length="200" />
> <property name="Activo" column="activo" type="System.Int32" />
> </class>
> </hibernate-mapping>
>
> Clase
>
> using System;
>
> namespace AC.Domain
> {
> public class Banco
> {
> private Int32 _id;
> private String _nombre;
> private Int32 _activo;
> private Int32 _version;
>
> public virtual Int32 Version
> {
> get { return _version; }
> set { _version = value; }
> }
>
> public virtual Int32 Id
> {
> get { return _id; }
> set { _id = value; }
> }
>
> public virtual String Nombre
> {
> get { return _nombre; }
> set { _nombre = value; }
> }
>
> public virtual Int32 Activo
> {
> get { return _activo; }
> set { _activo = value; }
> }
>
> public override bool Equals(object obj)
> {
> if (obj == null || !(obj is Banco))
> return false;
>
> var banco = (Banco)obj;
>
> return ((Nombre == null && banco.Nombre == null) ||
> Nombre.Equals(banco.Nombre));
> }
>
> public override int GetHashCode()
> {
> return string.Format("{0}", Nombre).GetHashCode();
> }
> }
> }
>
>
>
>
> El día 24 de agosto de 2010 12:17, Diego Mijelshon
> <[email protected]> escribió:
> > ¿Podrías incluir la clase y el xml?
> >
> > Diego
> >
> >
> > 2010/8/24 Diego Perlman <[email protected]>
> >>
> >> Diego intento poner el <version > en mi mapping y me tira error, como
> >> que no lo reconoce.
> >> Tenes idea que puede estar pasando. Estoy usando NH 2.1
> >> Saludos
> >>
> >> El día 24 de agosto de 2010 12:00, Diego Mijelshon
> >> <[email protected]> escribió:
> >> > ¿Probaste agregar control _optimista_ de versiones?
> >> >
> >> > Diego
> >> >
> >> >
> >> > 2010/8/24 Diego <[email protected]>
> >> >>
> >> >> Buenas a todos antes que nada.
> >> >> Les cuento que empece trabajar con NH hace unos 6 meses.
> >> >> Y ahora que tengo la aplicacion corriendo con varios usuarios tengo
> >> >> graves problemas con el tema de la concurrencia.
> >> >> He leido el articulo de Ayende y el knol (creo que lo escribio
> Fabio).
> >> >> El tema es que pruebo hacer un Lock al momento de hacer un Upgrade y
> >> >> no funciona.
> >> >> Tambien probe hacer un Lockeo pesimista y tampoco funciona.
> >> >> Me parece que no lo se implementar.
> >> >> Quiero hacerlo funcionar sobre un objeto sencillo para despues
> hacerlo
> >> >> funcionar en los lugares criticos de la aplicacion.
> >> >>
> >> >> Lo que probe y no me funciona es lo siguiente:
> >> >> public Object GetById(int bancoId)
> >> >> {
> >> >> using (ISession session = NHibernateHelper.OpenSession())
> >> >> using (ITransaction transaction =
> >> >> session.BeginTransaction())
> >> >> {
> >> >> Banco tempBanco = session.Get<Banco>(bancoId);
> >> >> session.Lock(tempBanco, LockMode.Upgrade);
> >> >> transaction.Commit();
> >> >> return tempBanco;
> >> >> }
> >> >>
> >> >> }
> >> >>
> >> >> Ahora 2 usuarios levantan el mismo objeto Banco lo modifican y a
> >> >> ninguno le tira el ObjectStaleException.
> >> >>
> >> >> Alguien me puede decir que estoy haciendo mal y orientarme para ver
> >> >> como lo arreglo??
> >> >> Saludos
> >> >> Diego
> >> >>
> >> >> --
> >> >> Para escribir al Grupo, hágalo a esta dirección:
> >> >> [email protected]
> >> >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
> >> >
> >> > --
> >> > Para escribir al Grupo, hágalo a esta dirección:
> >> > [email protected]
> >> > Para más, visite: http://groups.google.com/group/NHibernate-Hispano
> >>
> >> --
> >> Para escribir al Grupo, hágalo a esta dirección:
> >> [email protected]
> >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
> >
> > --
> > Para escribir al Grupo, hágalo a esta dirección:
> > [email protected]
> > Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano