Hola todos , Luego de batalla , Logre lo que quiero.

Factura:
  <class name="Factura"  table="Facturas">
    <id name="Id" column="Id">
      <generator class="identity" />
    </id>

    <any name="Entidad" id-type="System.Int64" meta-
type="System.String" cascade="all">
      <meta-value value="A" class="Agente"/>
      <meta-value value="C" class="Cliente"/>
      <column name="EntidadType" not-null="true" />
      <column name="IdEntid" not-null="true"/>
    </any>

  </class>


Cliente:
  <class name="Cliente" table="Clientes">
    <id name="Id" type="Int64" column="Id">
      <generator class="identity" />
    </id>
    <property name="Nombre" type="String" column="Nombre" />
  </class>

Agente:
  <class name="Agente" table="Agentes">
    <id name="Id" type="Int64" column="Id">
      <generator class="identity" />
    </id>
    <property name="Nombre" type="String" column="Nombre" />
  </class>


EN C#

Clases.cs

public abstract class Entidad
    {
        public virtual Int64 Id
        {
            get;
            set;
        }
    }



public class Factura : BaseAbstracta
    {

        private Entidad _entidad;

        public virtual Entidad Entidad
        {
            get { return _entidad; }
            set { _entidad = value; }
        }
    }



public class Agente : Entidad
    {

        private string _nombre;

        public virtual string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        private string _codigo;

        public virtual string Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

    }
public class Cliente : Entidad
    {

        private string _nombre;

        public virtual string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        private string _codigo;

        public virtual string Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

    }


Gracias por aporte de Carlos.
Saludos a todos
Que pases un buen fin de semana!

On 28 sep, 16:25, Flapido <[email protected]> wrote:
> Muchas gracias , Carlos , voy a tratar.
>
> On 28 sep, 07:05, Carlos Peix <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hola Federico,
>
> > Como muchos ya han dicho en esta lista, es muy dificil llegar a un buen
> > diseño usando un ORM si no te acostumbras a pensar en objetos en lugar de en
> > tablas.
>
> > Fijate en un thread reciente de esta misma lista en la que planteo un tema
> > similar, la triada evento-rol-actor.
>
> >http://groups.google.com/group/nhibernate-hispano/browse_thread/threa...
>
> > En tu caso, el evento seria la Factura, la cual debe ser emitida a un
> > Cliente (Rol), mas alla de que sea una Empresa (Actor) o un Agente (Aqui
> > creo que tenemos un rol tambien)
>
> > De esta manera, definiendo tu rol Cliente, podes hacer que cualquiera lo
> > desempeñe (Empresa, persona, etc).
>
> > En ese thread planteo varias alternativas para el mapeo y algunas dudas.
> > Finalmente esa cuestion quedo abierta pero, charlando con Fabio en un evento
> > hace unas semanas, "me conto" una solucion que entendi parcialmente pero que
> > aun debo implementar.
>
> > Un saludo
>
> > ----------------------------------
> > Carlos Peix
>
> > 2011/9/27 Flapido <[email protected]>
>
> > > Quiero hacer un mapeo para las Entidades
>
> > > Tabla
> > > Factura
> > > -id
> > > -TypeEntidad ( si typeEntidad es  A --> Agente sino cliente)
>
> > > Agente
> > > -id
>
> > > Cliente
> > > -id
>
> > > como armo los mapeos?  o tengo que crear otra tabla de relacion entre
> > > Factura y Entidades
> > > Ejemplo:
> > > Factura_entidades
> > > -Id
> > > -IdAgente
> > > -Idcliente
>
> > > Gracias!!!
>
> > > --
> > > 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

Responder a