ASP.NET mvc3 - Problema com a declaração do model

12 views
Skip to first unread message

brinklley

unread,
Jan 17, 2013, 8:36:57 AM1/17/13
to de...@googlegroups.com
Bom dia pessoal,

Tenho o seguinte mapeamento:

public class Customer {
                 public virtual ICollection<Car> Cars { get; set; }
                 public virtual ICollection<Invoice> Invoices { get; set; }                 
    }

public class Car {
               public virtual Customer Customer { get; set; }
   }

public class Invoice{
               public virtual Customer Customer { get; set; }
  }

A questão que agora eu quero adicionar a classe invoice uma propriedade de Car e não consigo pois dá erro de referência circular, alguém já passou por isso ou sabe como resolver??

O motivo desse mapeamento, é pq uma fatura ou OS esta atrelado a um cliente e um veiculo naquele momento, mas o veiculo no futuro pode mudar de cliente, sem que altere o relacionamento na fatura.

Bruno Teixeira

unread,
Jan 18, 2013, 6:06:28 AM1/18/13
to de...@googlegroups.com
Oi amigo, o seu padrão de projeto é MVC?
Message has been deleted

Bruno Teixeira

unread,
Jan 18, 2013, 6:23:03 AM1/18/13
to de...@googlegroups.com
Bom, mas vamos lá.

Faça seu mapeamento diferente:

public class Customer {
   public virtual ICollection<Invoice> Invoices { get; set; }                 
}

public class Car {
}

public class Invoice{
   public virtual Customer Customer { get; set; }
   public virtual Car Car { get; set; }
}

Transformei a relação da classe "Car" com a classe "Invoice" de forma que agora a instância de "Invoice" contém uma (e somente uma) instância de "Car" e uma (e somente uma) instância de "Customer". Esta, por sua vez, em modelagem de dados relacionais seria a tabela relacional entre "Customer" e "Car". A relação deixa de ser direta e é feita através da entidade relacional.

Já "Customer" pode conter diversas "Invoice", dentro de uma implementação de "ICollection<Invoice>"..
Resumindo, a relação entre "Customer" e "Invoice", e a relação entre "Invoice" e "Car" agora é:
  • 1 "Customer" possui "Invoice";
  • 1 "Invoice" possui 1 "Customer".
  • 1 "Invoice" possui 1 "Car".
Através desta mudança de modelagem, você consegue criar métodos que lhe forneçam os dados que você está esperando de cada classe.

Espero ter lhe ajudado!
Bom dia, []'s.

Att,
Bruno Teixeira da Silva.

Em quinta-feira, 17 de janeiro de 2013 11h36min57s UTC-2, brinklley escreveu:

Jonatan L. R. Aguiar

unread,
Jan 18, 2013, 6:27:33 AM1/18/13
to de...@googlegroups.com
Exato Bruno, fiz isso ontem a noite e funcionou perfeitamente.

Grato,

 


Jonatan L. R. Aguiar

Msn/Gtalk brin...@gmail.com
Cel: (51) 8166-3753
Tel Com: (51)3061-4450 




--
--
Acesse nosso blog http://devrs.net/
Siga-nos no twitter! http://twitter.com/DevRsNet
--
Antes de criar um novo post, para maior organização do grupo, procure seguir as regras de TAGS: http://devrs.net/regras-da-lista
Para postar para o grupo, envie email para de...@googlegroups.com
Para sair do grupo, envie email para devrs+un...@googlegroups.com

Bruno Teixeira

unread,
Jan 18, 2013, 6:31:05 AM1/18/13
to de...@googlegroups.com
Beleza, que bom que conseguiu!

Tenha um bom dia!!

[]'s

Att,
Bruno Teixeira da Silva.
Reply all
Reply to author
Forward
0 new messages