Mapeamento em NHibernate

2 visualizações
Pular para a primeira mensagem não lida

Junior

não lida,
11 de dez. de 2009, 13:32:3911/12/2009
para dotnetar...@googlegroups.com
Olá Pessoal,
 
Possuo uma tabela (TB_REGISTRO) onde a chave primária é formada por uma chave estrangeira, estou encontrando problemas quando vou montar o relacionamento no NHibernate, alguém saberia me dizer qual o tipo de relacionamento que eu devo usar nesta situação. Como disse a tabela não possui uma chave primária própria, existe uma chave estrangeira que também é chave primária.

Abaixo está a estrutura das classes e uma parte do arquivo de mapeamento do NHibernate. O relacionamento que estou fazendo é da Tabela TB_REGISTRO com a TB_ARQUIVO (CAMPO CHAVE ID_ARQUIVO)

   
   <class name="ERP.Comum.ArquivoTO, ERP.Comum" table="TB_RP_ARQUIVO">
    <id name="Id" type="int" column="ID_ARQUIVO" unsaved-value="0" >
      <generator class="identity"/>
    </id>
 
 <property name="NomeArquivo"          column="NM_ARQUIVO"           type="string"    length="50" />
    <property name="Ie"                     column="IE"                      type="string"    length="14" />
    <property name="Cnpj"                   column="CNPJ"                 type="string"    length="14" />
   
   
 <many-to-one name="Status"
         class="ERP.Comum.TipoStatusTO, ERP.Comum"
            column="ID_TIPO_STATUS" cascade="all" />
   
 <many-to-one name="Finalidade"
         class="ERP.Comum.FinalidadeTO, ERP.Comum"
            column="ID_FINALIDADE" cascade="all" />
   
 <many-to-one name="NaturezaOp"
         class="ERP.Comum.NaturezaOpTO, ERP.Comum"
            column="ID_NATUREZA_OP" cascade="all" />
 
 <many-to-one name="TipoDocumento"
         class="ERP.Comum.TipoDocumentoTO, ERP.Comum"
            column="ID_TIPO_DOC" cascade="all" />
   
    <bag name="Historico" >
  <key column="ID_ARQUIVO" />
        <one-to-many class="ERP.Comum.ArquivoHistoricoTO, ERP.Comum" />
    </bag>

  </class>
 
 
 public class ArquivoTO : TransferObject
    {
        private int id;
        public virtual int Id
        {
            get { return id; }
            set { id = value; }
        }

        private string nomeArquivo;
        public virtual string NomeArquivo
        {
            get { return nomeArquivo; }
            set { nomeArquivo = value; }
        }
   
    public class RegistroTO : TransferObject
    {
        private  ArquivoTO arquivoId;
        public virtual  ArquivoTO ArquivoId
        {
            get { return arquivoId; }
            set { arquivoId = value; }
        }
       
        private string cnpj;
        public virtual string Cnpj
        {
            get { return cnpj; }
            set { cnpj = value; }
        }
}
 
 
 </class>
  <class name="ERP.Comum.RegistroTO, ERP.Comum" table="TB_REGISTRO">
   
 <id name="ArquivoId" type="int" column="ID_ARQUIVO" >
      <generator class="assigned"/>
    </id>
    
    <property name="Logradouro"        column="DS_LOGRADOURO"         type="string"/>
    <property name="Numero"            column="NR_NUMERO"             type="string"/>
    <property name="Complemento"       column="DS_COMPLEMENTO"        type="string"/>
    <property name="Bairro"            column="DS_BAIRRO"             type="string"/>
    <property name="Cep"               column="NR_CEP"                type="long"/>
    <property name="Telefone"          column="NR_TELEFONE"           type="long"/>
 <property name="Contato"           column="DS_CONTATO"            type="string"/>
   
   <set name="ArquivoId" >
    <key column="ID_ARQUIVO" />
       <one-to-many class="ERP.Comum.ArquivoTO, ERP.Comum" />
    </set> 
  </class>
 
Obrigado,

-- 
Antonio Junior | Consultor de TI
MCP   - .Net Applications
MCTS - Windows | Web | Distributed Applications
55 11 9995 1022 | jjunior.net@gmail.com
http://br.linkedin.com/in/jjuniorbr

Emmanuel G. Brandão

não lida,
14 de dez. de 2009, 13:46:2214/12/2009
para dotnetar...@googlegroups.com
Junior,
 
Primeiro, tente não usar chaves compostas! Entre no site do grupo de NH Brasil que tem um documento explicando por que isso é ruim. Além de que é ruim de trabalhar com o NH assim.
Procure no site por "chaves compostas" eu cheguei a postar algumas perguntas que foram respondidas, mas não funcionou muito bem, então eu desisti.

Brandão, Emmanuel G.
CSM
blog.egomesbrandao.net

___________________________________
Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Apague também os endereços dos amigos que receberam juntamente com você a mensagem, antes de enviar;
3 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.


2009/12/11 Junior <jjunior.net@gmail.com>
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br

Responder a todos
Responder ao autor
Encaminhar
0 nova mensagem