none
update many to many RRS feed

  • Pergunta

  • Estou construindo uma app que utiliza entity 4.1 e banco mysql. o banco foi construido primeiro e logo após foi criado o Entity
    Data Model:





    so que existe uma relação n - n  entre codigo_fonte e tecnologia


    eu estou com dificuldade de relação de updates
    (ex.: atualizar as tecnologias vinculadas ao codigo fonte)

    gostaria de saber uma lógica que posso utilizar para realizar esta operação...

    mer

    quinta-feira, 28 de junho de 2012 21:16

Respostas

  • Olá Andrey,

    Criei um DbContext com o que vc vai precisar.

    Já testei e funcionou... deu um trabalhinho, mas ta ai:

    public class DataContext : DbContext
    {
        public DataContext()
            : base(@"SUA CONNECTION STRING")
        {
            Database.SetInitializer<DataContext>(null);
        }
        public DbSet<plataform> platforms { get; set; }
        public DbSet<codigo_fonte> codigo_fontes { get; set; }
        public DbSet<tecnologia> tecnologias { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<plataform>()
                        .ToTable("plataform");
            modelBuilder.Entity<plataform>()
                        .HasKey(e => e.id_plataform);
            modelBuilder.Entity<codigo_fonte>()
                        .ToTable("codigo_fonte");
            modelBuilder.Entity<codigo_fonte>()
                        .HasKey(e => e.id_codigo_fonte);
            modelBuilder.Entity<tecnologia>()
                        .ToTable("tecnologia");
            modelBuilder.Entity<tecnologia>()
                        .HasKey(e => e.id_tecnologia);
            modelBuilder.Entity<codigo_fonte>()
                        .HasMany(e => e.tecnologias)
                        .WithMany(e => e.codigos_fonte)
                        .Map(m =>
                        {
                            m.ToTable("tecnologias_codigo_fonte");
                            m.MapLeftKey("codigo_fonte_id_codigo_fonte");
                            m.MapRightKey("tecnologia_id_tecnologia");
                        }); 
                
            base.OnModelCreating(modelBuilder);
        }
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Andrey Mariano segunda-feira, 2 de julho de 2012 12:48
    sexta-feira, 29 de junho de 2012 02:01
    Moderador

Todas as Respostas

  • Estou construindo uma app que utiliza entity 4.1 e banco mysql. o banco foi construido primeiro e logo após foi criado o Entity
    Data Model:





    so que existe uma relação n - n  entre codigo_fonte e tecnologia


    eu estou com dificuldade de realizar updates
    (ex.: atualizar as tecnologias vinculadas ao codigo fonte)

    gostaria de saber uma lógica que posso utilizar para realizar esta operação...

    mer


    quinta-feira, 28 de junho de 2012 21:22
  • Olá Andrey,

    Criei um DbContext com o que vc vai precisar.

    Já testei e funcionou... deu um trabalhinho, mas ta ai:

    public class DataContext : DbContext
    {
        public DataContext()
            : base(@"SUA CONNECTION STRING")
        {
            Database.SetInitializer<DataContext>(null);
        }
        public DbSet<plataform> platforms { get; set; }
        public DbSet<codigo_fonte> codigo_fontes { get; set; }
        public DbSet<tecnologia> tecnologias { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<plataform>()
                        .ToTable("plataform");
            modelBuilder.Entity<plataform>()
                        .HasKey(e => e.id_plataform);
            modelBuilder.Entity<codigo_fonte>()
                        .ToTable("codigo_fonte");
            modelBuilder.Entity<codigo_fonte>()
                        .HasKey(e => e.id_codigo_fonte);
            modelBuilder.Entity<tecnologia>()
                        .ToTable("tecnologia");
            modelBuilder.Entity<tecnologia>()
                        .HasKey(e => e.id_tecnologia);
            modelBuilder.Entity<codigo_fonte>()
                        .HasMany(e => e.tecnologias)
                        .WithMany(e => e.codigos_fonte)
                        .Map(m =>
                        {
                            m.ToTable("tecnologias_codigo_fonte");
                            m.MapLeftKey("codigo_fonte_id_codigo_fonte");
                            m.MapRightKey("tecnologia_id_tecnologia");
                        }); 
                
            base.OnModelCreating(modelBuilder);
        }
    }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Andrey Mariano segunda-feira, 2 de julho de 2012 12:48
    sexta-feira, 29 de junho de 2012 02:01
    Moderador