Hasta donde yo recuerdo, el SaveOrUpdate no sabe que hacer de por si, sino que lo compara con unsaved-value... claro que cuando los datos son enteros que se persisten con hilo o sin identity/sequence en la db el valor por defecto de unsaved-value le alcanza para determinar si es un save o un update. También funciona el valor por defecto para Guid.
tengo entendido (o creo) que el modo ideal para trabajar nh sería con un id numérico con un algoritmo de generación (o guid)... todo está preparado para que así funcione con los default... también, nh, te da soporte para composite-id, pero ahí lo tenés que trabajar a mano (al igual que con los assigned). Nelo. 2010/9/23 Nestor Rodriguez <[email protected]>: > Bueno basicamente para usar el interceptor debes implementar una clase base > para tus entidades que en el ejemplo es la clase "public class > Persistent"(seccion 19.4) . Luego debes implementar un interceptor que > herede de EmptyInterceptor y sobre escribes los metodos IsTransient() Load() > y Save() tal como se ve en el ultimo ejemplo de codigo de la seccion 19.5. > Por ultimo este interceptor debes instanciarlo una unica vez y pasarlo como > un parametro al sessionFactory.OpenSession(tuinterceptor) para todas tus > sesiones. > Espero estas instrucciones te sirvan. En dado caso que no el dia de maniana > te podria enviarte el codigo del interceptor el cual no tengo en este > momento a la mano. Aunque si sigues al pie de la letra las instrucciones > estoy seguro que te servira. > Saludos, > Nestor Rodriguez > > 2010/9/23 Google Cris <[email protected]> >> >> Yo otra vez, bueno trate de leer eso del "Interceptor" y el >> "IsTransient" pero realmente no lo entiendo :( >> >> He buscado por google algun ejemplo y no encuentro :( o mas bien >> quizas no los entiendo. >> >> Si alguno tiene algun link en donde aparezca un ejemplo concreto de >> como implementar eso seria de mucha ayuda. :) >> >> Por otro lado el Save o Update por separado si funciona pero yo creia >> que con el SaveOrUpdate el entedia que hacer de una vez, si era un >> save o un update, pero igualmente por lo menos por ahora tengo que >> verificar si existe, entonces hay que modificar y sino existe entonces >> creo el objeto. Digamos asi >> >> >> boundListCollection.Add<Listado>(sessionContext.GetObjects<Listado>()); >> >> Listado clsListado; >> >> IBoundList<Listado> listaListado = >> boundListCollection.Get<Listado>().CreateCriteriaController() >> >> .AddCriteria(coleccion.Expression.Equal<Listado, >> Int64>("ID", 50)) >> .BoundList(); >> if (listaListado.Count == 0) >> { >> clsListado = new Listado(); >> } >> else >> { >> clsListado = listaListado[0]; >> } >> >> clsListado.DescripcionListado = "Cambio"; >> listaListado.Add(clsListado); >> listaListado.AddedItems.Add(clsListado); >> >> sessionContext.SaveOrUpdate<Listado>(listaListado.AddedItems); >> >> Para que no se enrreden digamos que el boundListCollection es una >> coleccion de listas y el IBoundList es un tipo (List). >> >> -- >> 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
