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

02/12/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:
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:
public DbContext<RNC> RNC_DADOS {get; set;}
public DbContext<RNC_OCORRENCIA> RNC_OCORRENCIA {get;set;}

Vinicius Fernandes

Respostas

04/12/2013

Joel Rodrigues Currículo

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

05/12/2013

Vinicius Fernandes

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.
Responder Citar

05/12/2013

Vinicius Fernandes

Agora fiz algo assim, um terceiro model, Nomeado CadastroViewModel

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; }
    }
}
Responder Citar

05/12/2013

Joel Rodrigues Currículo

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

06/12/2013

Vinicius Fernandes

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?
Responder Citar

06/12/2013

Joel Rodrigues Currículo

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.
Responder Citar

06/12/2013

Vinicius Fernandes

Nesse caso somente usar o VC do MVC, correto?
Responder Citar

07/12/2013

Vinicius Fernandes

Joel, só para fim de dúvida mesmo, o relacionamento entre as tabelas é dessa forma:
[img]http://arquivo.devmedia.com.br/forum/imagem/343696-20131207-105145.png[/img]
Responder Citar

07/12/2013

Joel Rodrigues Currículo

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.
Responder Citar

07/12/2013

Vinicius Fernandes

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?
Responder Citar

07/12/2013

Vinicius Fernandes

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.
Responder Citar