none
Trabajar con 1 Vista y 2 Controladores. Model First RRS feed

  • Pregunta

  • Hola!

    Estoy trabajando con MVC  Model First.

    Tengo una relacion many to many y para ello, al agregar la asociacion, MVC me ha creado una  tabla puente (que no veo en el Context, solo en la BBDD).

    El problema lo tengo cuando al llamar desde una sola vista a los 2 controladores. Porque necesito rellenar datos de la Entidad Incidencia (que contiene varios emails. Email es la otra Entidad).

    He estado chequeando el foro y hablan de crear 2 formularios en la misma vista; Lo he intentado pero no funciona.

    El caso es que puedo añadir Emails (con las vistas generadas x MVC) y puedo añadir Incidencias(con las vistas generadas tb x MVC) pero no asocia estos Emails a las Incidencias.

    ¿podeis decirme por dónde tirar??

    Muchas gracias.

    jueves, 9 de junio de 2016 13:35

Todas las respuestas

  • hola

    pero como implementas la asociacion?

    podrias quizas mostrar un combo de mail o quizas un list con check para que se seleccione que mail se deben asignar a la Incidencias

    pero deberias enviar esto como parte del modelo de Incidencias cuando persistes

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 9 de junio de 2016 18:25
  • Hola Leandro. Muchas gracias por contestar!

    Te comento como lo tengo implementado:

    Tengo creadas 2 entidades

    La Asociación que he creado entre ambas es de muchos a muchos. Sin añadir propiedades a las Entidades. Solo se han añadido las Propiedades de Navegación de la Asociación.

    Despues he pasado la plantilla que genera el Context y el Modelo. Ha quedado asi:

     protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                throw new UnintentionalCodeFirstException();
            }
        
            public DbSet<Usuario> Usuario { get; set; }
            public DbSet<Operador> Operador { get; set; }
            public DbSet<Encuesta> Encuesta { get; set; }
            public DbSet<Estado> Estado { get; set; }
            public DbSet<Correo> Correo { get; set; }

    * Como ves no aparece la Entidad EncuestaCorreo

    Y asi han quedado las Entidades:

     public partial class Correo
        {
            public Correo()
            {
                this.Encuesta = new HashSet<Encuesta>();
            }
        
            public int id { get; set; }
            public string email { get; set; }
        
            public virtual ICollection<Encuesta> Encuesta { get; set; }
        }

     public partial class Encuesta
        {
            public Encuesta()
            {
                this.Correo = new HashSet<Correo>();
            }
        
            public int id { get; set; }
            public string RFC { get; set; }
            public System.DateTime fecha { get; set; }
            public int Estado_id { get; set; }
            public int Operador_id { get; set; }
            public int Usuario_id { get; set; }
        
            public virtual Estado Estado { get; set; }
            public virtual Usuario Usuario { get; set; }
            public virtual Operador Operador { get; set; }
            public virtual ICollection<Correo> Correo { get; set; }
        }

    Despues he generado la BBDD ( y aqui es donde crea la Entidad EncuestaCorreo) con EncuestaId y CorreoId.

    Y ahora he añadido el Controlador Fuertemente Tipado con sus Vistas (Index,Edit,Detail y Delete).

    Lo que necesito es desde la vista de EncuestaEdit que muestre tambien la lista de correos que contiene esta Encuesta o poder Añadir correos si no los tubiera.

    Lo unico que he conseguido hasta ahora es añadiendo por BBDD una Encuesta y varios Correos y en EncuestaCorreo añadir estos id

    EncuestaId "1", CorreoId "1", 

    EncuestaId "1", CorreoId "2",

    EncuestaId "1", CorreoId "3",

    EncuestaId "2", CorreoId "1"

    En la Vista de Encuesta Details he añadido :

    <ul>
        @foreach (var c in Model.Correo)
        {
        <li>
        @c.email
        </li>
         }
    </ul>

    Y si! Muestra los correos que pertenecen a ésta Encuesta.

    Peeeero no encuentro la manera de Añadir Correos a las Encuestas.

    La idea del Combo la tengo en Operador y funciona bastante bien, porque Operador es un Array Fijo. Pero para Correos no me parece lo mas propio porque necesito añadir cuanto email quiera.

    Espero haberme expresado mejor esta vez.

    Muchas gracias de nuevo!

    Saludos.

    viernes, 10 de junio de 2016 7:06
  • Hola de Nuevo!

    Por lo he que podido investigar,

    EF genera la tabla en la BBDD pero no el Modelo de la Entidad. Hasta ahi bien, lo tengo igual.

    Para trabajar manytomany necesitaría la plantilla ManyToMany Edit.ascx (porque tengo Razor). Compruebo que la tengo instalada.

    Lo que no se es ahora utilizarlas. Vamos que estoy casi igual que antes...

    Ah! tampoco he encontrado nada similar a Migration/Seed para migrar mis datos (como se facilita para DataBase First y para Code First). Conoceis alguna manera de migrar los datos para Model First?

    Muchas gracias de nuevo!


    viernes, 10 de junio de 2016 11:43