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

Responder a