Array
(
)

Acesso a mais de uma entidade em um Model - ASP.NET MVC

Vinicius Fernandes
   - 02 dez 2013

Bom dia Srs,
Estou caminhando para a criação de um sistema para a empresa onde trabalho, porém me deparei com uma duvida no momento de criar minhas Views para o cadastro dos registros.
Já criei todo o modelo relacional através da importação que se realiza pelo banco de dados. Até este momento tudo certo. Porém tenho mais de um registro, que será o cadastro dos motivos de uma ocorrência, por isso tenho minhas duas Entidades assim:
#Código

public class rnc
{
[Key]
public int CD_RNC{ get; set; }
.
.
.
public string CD_USUARIO{ get; set;}
}

public class rnc_ocorrencia
{
[Key]
public int CD_RNCOCORRENCIA { get; set; }
public int CD_RNC { get; set; }
.
.
.
public int CD_OCORRENCIA { get; set;}
}

Essas duas tabelas no banco de dados atuariam da seguinte forma, tenho um novo registro, gero uma entidade de RNC, porém, vou ter um listbox para preencher n RNC_OCORRENCIA porém não consigo encontrar meio de dizer que tenho as duas entidades na mesma View para criar os campos da entidade RNC e a listbox da RNC_OCORENCIA.
Minha pergunta seria, consigo criar um terceiro model, contendo as duas entidades e realizar a associação por elas? Nesse caso, deveria declarar o DbContext para as duas tabelas, como abaixo:
#Código
public DbContext<RNC> RNC_DADOS {get; set;}
public DbContext<RNC_OCORRENCIA> RNC_OCORRENCIA {get;set;}

Joel Rodrigues
   - 04 dez 2013

opa, vejamos se entendi. Para 1 RNC existe 1 OCORRÊNCIA? Ou o relacionamento éde 1 RNC para N OCORRÊNCIAS?

Vinicius Fernandes
   - 05 dez 2013

Eu tenho 1 RNC cadastrada, mas as ocorrências, que seriam os "acidentes", poderiam ser "N" ocorrências.

Estou lendo algo a respeito das View Models(referente ao ASP.NET MVC, não do MVVM), porém não estou "capitando" muito bem como funciona, na verdade, só consigo fazer as aplicações que gravam em uma unica tabela.

Vinicius Fernandes
   - 05 dez 2013

Agora fiz algo assim, um terceiro model, Nomeado CadastroViewModel

#Código

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Sistema.Models
{
    public class CadastroViewModel
    {
        public RNC_DADOS RNCDADOS;
        public IEnumerable<RNC_OCORRENCIA> RNC_OCORRENCIA { get; set; }
    }
}

Joel Rodrigues
   - 05 dez 2013

Veja este link, talvez lhe ajude: Formulário master detail com ASP NET MVC e jQuery

Vinicius Fernandes
   - 06 dez 2013

Entendi o exemplo citado no link.
Mas agora penso que estou um pouco mais confuso que antes. Leio muitos materiais sobre o MVC, afinal, devo ou não devo utilizar o conceito StronglyType para as Views?

Joel Rodrigues
   - 06 dez 2013

Rapaz, eu não vejo problema em usar views tipadas, mas quando isso é necessário e viável (boa parte dos casos).Se for necessário usar uma view não tipada, eu também não vejo problema nisso.

Vinicius Fernandes
   - 06 dez 2013

Nesse caso somente usar o VC do MVC, correto?

Vinicius Fernandes
   - 07 dez 2013

Joel, só para fim de dúvida mesmo, o relacionamento entre as tabelas é dessa forma:
Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 07 dez 2013

Bem, eu achei que cada RNC poderia ter várias ocorrências, mas uma ocorrência só está ligada a um RNC. É isso?
Se for, são apenas duas tabelas e na tabela de ocorrências deve ter uma chave estrangeira apontando para o RNC.
É que estou no celular, aí não dá para ilustrar melhor, mas confirme esse relacionamento para a gente chegar à melhor forma.

Vinicius Fernandes
   - 07 dez 2013

então, na verdade é um relacionamento Many to Many pelo que eu li.

Acho que eu até me confundi, mas como exemplo.

O registro de não conformidade, poderá gerar mais de uma RNC_OCORRENCIA, pois tem vários eventos que podem ocorrer na mesma situação.

A tabela RNC_OCORRENCIA serve para associar a RNC_DADOS com a OCORRENCIA, entendeu?

Vinicius Fernandes
   - 07 dez 2013

Estou fazendo as associações aqui enquanto leio o livro que o pessoal sugeriu em uma outra ocasião para um membro aqui do DevMedia, o ASP.NET MVC4 in Action.

Tendo sucesso eu posto o codigo aqui, das relações criadas.