Como faço para realizar uma inserção de dados que Many-to-Many? No meu projeto tenho as classes Cidadaos e Imoveis, cada uma tem um Ilist da outra em suas propriedades, como vou preencher essas propriedades na hora de fazer um registro novo?
Eu quero cadastrar um imóvel novo, porém quando eu insiro um Cidadao na propriedade de imoveis essa não tem sua propriedade Imoveis preenchida e vice e versa gerando uma NullReferenceException, eu forcei a inserção com um Try Catch e funcionou mas aí a tabela intermediária não recebeu registros e assim não sou capaz de fazer consultas usando as duas tabelas.
Como faço esse insert da forma correta? Fiz assim?
Classe Imoveis
public class Imoveis
{
public virtual int cod_imovel { get; set; }
public virtual IList<Cidadaos> Cidadao { get; set; } //Relacionamento N:N com a tabela Cidadaos
public virtual Queixas Queixa { get; set; } //Chave estrangeira da tabela Queixas
public virtual IList<Rotas> Rota { get; set; } //Relacionamento N:N com a tabela Rotas
public virtual Ruas Rua { get; set; } //Chave estrangeira da tabela Ruas
public virtual string Numero { get; set; }
public virtual Bairros Bairro { get; set; } //Chave estrangeira da tabela Bairros
public virtual string Quadra { get; set; }
public virtual string Lote { get; set; }
}
Classe Cidadaos
public virtual int cod_cidadao {get; set;}
public virtual IList<Imoveis> Imovel { get; set; } //Relacionamento N:N com
public virtual string Nome { get; set; }
public virtual string Endereco { get; set; }
public virtual Cidades Cidade { get; set; } //Chave Estrangeira de Cidades
public virtual string Cep { get; set; }
public virtual string CPF { get; set; }
public virtual string RG { get; set; }
public virtual string Telefone { get; set; }
public virtual string Email { get; set; }
//Instanciando Ferramentas
ISession session = NHibernateHelper.AbreSessao();
Imoveis imo = new Imoveis();
ImovelDAO imoDAO = new ImovelDAO(session);
//Instanciando Cidadao
Cidadaos c = new Cidadaos();
CidadaoDAO cidDAO = new CidadaoDAO(session);
//Instanciando Rua
RuaDAO ruaDAO = new RuaDAO(session);
//Instanciando Bairro
BairroDAO bairroDAO = new BairroDAO(session);
//Inserção de Dados no Objeto
IList<Cidadaos> cidadaos = null;
imo.Rua = ruaDAO.BuscaPorCod(Convert.ToInt32(txtCodRua.Text));
imo.Bairro = bairroDAO.BuscaPorCod(Convert.ToInt32(txtCodBairro.Text));
imo.Numero = txtNumero.Text;
imo.Quadra = txtQuadra.Text;
imo.Lote = txtLote.Text;
try
{
for (int i = 0; i < txtProprietario.Rows.Count; i++)
{
c = cidDAO.BuscaPorCod(
Convert.ToInt32(txtProprietario.Rows[i].Cells[0].Value.ToString()));
imo.Cidadao.Add(c);
}
imo.Cidadao = cidadaos;
}
catch (NullReferenceException)
{
}
if (acao == "Incluir")
imoDAO.Adiciona(imo);
else
{
imo.cod_imovel = imovel.cod_imovel;
imoDAO.Updtae(imo);
}
MessageBox.Show("Operação concluída com sucesso!");
this.Close();