Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como mapear esse tipo de relacionamento

    public class Vendas
    {
        public virtual int Id {get;set;}
        public virtual IList<VendasItens> Itens { get; set; }

        public Vendas()
        {
            Itens = new List<VendasItens>();
        }
    }


    public class VendasItens
    {
        public virtual VendasItensID Id { get; set; }
        public virtual Produtos Produto {get;set;}
        public virtual decimal Quantidade {get;set;}     
    }


    public class VendasItensID
    {
        public virtual Vendas Venda { get; set; }
        public virtual int Item { get; set; }

        public VendasItensID(Vendas venda, int item)
        {
            this.Venda = venda;
            this.Item = item;
        }

        public override bool Equals(object obj)
        {
            bool retorno = false;
            VendasItensID objEquals = (VendasItensID)obj;
            if ((objEquals.Venda.Id == this.Venda.Id) && (objEquals.Item == this.Item))
            {
                retorno = true;
            }
            return retorno;
        }

        public override int GetHashCode()
        {
            int hashCode = 13;
            hashCode = (hashCode * 7) + this.Venda.Id.GetHashCode();
            hashCode = (hashCode * 7) + this.Item.GetHashCode();
            return hashCode;
        }
    }

    public class Produtos
    {
        public virtual int Id {get;set;}
        public virtual string CodigoBarras {get;set;}
        public virtual string Descricao {get;set;}
    }
1 resposta
solução!

Olá Idalvo

Para fazer esse mapeamento você precisa utilizar o mapeamento de chave composta do NHibernate:

http://nhforge.org/doc/nh/en/index.html#mapping-declaration-compositeid

No seu caso o código de mapeamento deve ficar no xml da classe VendasItens:

<composite-id name="Id">
  <key-property name="Item"/>
  <key-many-to-one name="Venda" column="VendaId"/>
</composite-id>