Início > Sem categoria > Tipos de relacionamentos com fluent nhibernate

Tipos de relacionamentos com fluent nhibernate

Neste post irei brincar um pouco mais com Nhibernate, tentando passar os tipos de relacionamento como ele, 1 x 1, 1 x n e n x n.

Eu irei utilizar o mesmo projeto dos posts anteriores.

Para o relacionamento 1 x 1 irei criar o domínio Armadura, onde iremos especificar que tipo de armadura do cavaleiro Ex.: Bronze, prata, papel … etc.

Domínio Armadura

Domínio Armadura

Nosso classe de mapeamento:

Mapeamento Armadura

Mapeamento

Note o .Length que adicionei depois do Map, como estamos  criando as nossas tabelas, através de nossas classes de domínio e mapeamento,com  fluent nhibernate também podemos , setar a o tamanho de nossas colulas se elas serão not null … etc.

No Domínio Cavaleiros adicione :

public virtual Armadura Armadura { get; set; }

Criamos uma propriedade com o valor do domínio Armadura.

Em CavaleirosMap

References(x => x.Armadura);

Com isso mapeamos a nossa pripriedade Armadura com o Domínio Armadura, assim criando o relacionamento 1 x 1, vamos rodar o script para que o fluent crie a tabela o relacionamento.

Na classe Config.cs altere os parametros do método .Create(true, true), agora na HomeController, dentro da Index action  adicione o código para que ele possa gerer o script e dropar e criar as tabelas.

var drop = new Config();

Verificando no nosso banco:

relacionamento 1 x1 fluent nhibernate

Relacionamento 1 x 1

Podemos ver na imagem, que ele fez tudo para agente, crio a tabela e a FK em Cavaleiros. Agora vamos ao relacionamento 1 X n.

Iremos utilizar 1 x n HasMany, quando precisarmos de uma lista Ex.: Cavaleiro,Especial, temos que criar um lista de especiais para um cavaleiro, pois um cavaleiro ira ter muitos  especiais.

Para isso vamos criar o Domínio Especiais:

Domínio

Domínio Especial

Mapeamento:

MapEspecial

MapEspecial

No Domínio Cavaleiros adicione este trecho de código:

HasMany Fluent Nhibernate

HasMany Fluent Nhibernate

Como cavaleiros terá uma lista de especiais, criamos uma propriedade especial com o valor da interface IList, depois criamos a propriedade Especial como Enumerable, para que possamos com a nossa lista e depois no construtor iniciamos a nossa lista, até aqui bem simples, vamos ao nosso Map:

E no nosso Map de Cavaleiros, temos também que alterar, pois como especial não e mais uma string, está com o valor de uma referência e será um lista temos que mapea-lo como tal:

HasMany(x => x.Especial)
.Access.CamelCaseField(Prefix.Underscore);

Neste trecho estamos especificando que o relacionamento é de um para muitos, que teremos uma lista do tipo Especial.

Bom vamos rodar novamente o projeto para criar a nossa tabela…

O banco tem que ficar desta forma:

HasMany Fluent Nhibernate

HasMany Fluent Nhibernate

Agora vamos para n x n:

Vamos criar o Domínio  Batalhas, onde um cavaleiro pode ter lutado em muitas Batalhas e uma batalha pode ter participado muitos Cavaleiros.

Criando o domínio Batalhas:

DominioBatalhas

DominioBatalhas

O Map de Batalhas:

Mapeamento Fluent Nhibernate

Mapeamento Fluent Nhibernate

O domínio Cavaleiros:

Relacionamentos com Fluent Nhibernate

Relacionamentos com Fluent Nhibernate

Mao de Cavaleiros:

Mapeamento com Fluent Nhibernate

Mapeamento com Fluent Nhibernate

Vamos rodar Buildar para testar.

O banco tem que ficar desta forma:

Banco de dados

Banco de dados

Bom com isso finalizamos os tipos de relacionamento com fluent nhubernate, no próximo post irei criar os metodos para que possamos testar esses relacionamentos… até espero que sejá útil :)

Segue abaixo o link para Download do projeto:

http://www.4shared.com/file/LUdieTLg/MvcNhibernate_2.html

CategoriasSem categoria
  1. Nenhum comentário ainda.
  1. Nenhum trackbacks ainda.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.