Yo diria que hagas el mapping de la herencia y haces un <many-to-one class="Party"> en Customer y en Party mapearias la coleccion de Roles.
2011/6/1 Carlos Peix <[email protected]> > Hola gente, > > Quiero consultarles algo ya que estoy tratando de encontrar una forma de > mapeo mas o menos estandar para un problema mas o menos estandar en mis > modelos. La consulta no solo se relaciona con el mapeo en NH, tambien me > interesa determinar la estructura de BD mas adecuada. > > Basicamente es la relacion evento-rol-actor, para que quede mas claro, > permitanme conpartir algunas clases: > > // evento > public class Order { > Guid _id; > Customer _customer; > } > > // el rol > public class Customer { > Guid _id; > Party _actor; // (1) u Object _actor > } > > // actores (ver Fowler para teoria sobre Party/Company/Person y > accountability) > public class Company : Party { > Guid _id; > string _companyName; > } > > public class Person : Party { > Guid _id; > string _firstName; > string _lastName; > } > > (1) aqui puedo tener definida alguna clase base para los actores que pueden > adoptar el rol de customer (como seria el caso de Party) y otras veces no, > para lo cual tendre que usar Object. Entiendo que esto me lleva a dos > respuestas distintas a mi consulta. > > La pregunta es como me conviene mapear la propiedad _actor de Customer, ya > se en el caso en que esta deba ser de tipo Object o Party. > > He probado con any y con many-to-one. Este objeto Customer podria o no > utilizar el mismo valor para el Id que el actor. Opino que lo mejor seria > que no lo hagan. Por ahi con Guids no hay problema pero en otros casos me > restringe. > > Un punto adicional seria que, probablemente, necesite en la entidad Company > o Person una coleccion de todos los roles desempeñados, seria como la > relacion opuesta y, en este caso, definitivamente no los roles no van a > compartir ninguna clase base salvo, eventualmente, una interfaz "IRol". > > ---------------------------------- > Carlos Peix > > -- > 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
