none
EF - Relacionamento N:N RRS feed

  • Pergunta

  • Quando eu tenho 2 classes no EF - Codefirst e eu quero criar um relacionamento de muitos pra muitos entre elas, uma terceira tabela (ProductAuthor) e' criada no SQL.

    public class Product
        {
            public int ProductId { get; set; }
            public string Code { get; set; }

            public virtual List<Author> Author { get; set; }
        }

    public class Author
        {
            public int AuthorId { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }

            public virtual List<Product> Products { get; set; }

    }

    No entanto, essa terceira tabela criada automaticamente no SQL so contem as chaves primarias de Product e Author.
    Eu preciso adicionar novos campos nessa tabela, como um id incremental e creation_date. Como faco isso ?

    Abracos

    • Editado AGA Neto quinta-feira, 14 de agosto de 2014 19:19
    quinta-feira, 14 de agosto de 2014 19:16

Todas as Respostas

  • AGA você vai ter que mapea-la da mesma forma como você fez com essas classes. 

     [Table("ParametroJoinEmpresa")]
        public partial class ParametroJoinEmpresa
        {
            public int IdParametro { get; set; }
    
            public int IdEmpresa { get; set; }
    
            public int Id { get; set; }
    
            public virtual EmpresaParametro EmpresaParametro { get; set; }
    
            public virtual Parametros Parametros { get; set; }
        }
     [Table("EmpresaParametro")]
        public partial class EmpresaParametro
        {
            public EmpresaParametro()
            {
                ValorParametroEmpresas = new HashSet<ValorParametroEmpresas>();
                ParametroJoinEmpresa = new HashSet<ParametroJoinEmpresa>();
            }
    
            [Key]
            public int IdEmpresa { get; set; }
    
            [Required]
            [StringLength(100)]
            public string NomeEmpresa { get; set; }
    
            public virtual ICollection<ValorParametroEmpresas> ValorParametroEmpresas { get; set; }
    
            public virtual ICollection<ParametroJoinEmpresa> ParametroJoinEmpresa { get; set; }
        }
     public partial class Parametros
        {
            public Parametros()
            {
                ParametroJoinEmpresa = new HashSet<ParametroJoinEmpresa>();
                ValorParametroEmpresas = new HashSet<ValorParametroEmpresas>();
            }
    
            [Key]
            public int IdParametro { get; set; }
    
            [StringLength(100)]
            public string Descricao { get; set; }
    
            [StringLength(350)]
            public string Observacao { get; set; }
    
            public virtual ICollection<ParametroJoinEmpresa> ParametroJoinEmpresa { get; set; }
    
            public virtual ICollection<ValorParametroEmpresas> ValorParametroEmpresas { get; set; }
        }
     modelBuilder.Entity<EmpresaParametro>()
                    .HasMany(e => e.ParametroJoinEmpresa)
                    .WithRequired(e => e.EmpresaParametro)
                    .WillCascadeOnDelete(false);
    
                modelBuilder.Entity<Empresas>()
                    .Property(e => e.nomeEmpresa)
                    .IsUnicode(false);
    
                modelBuilder.Entity<Parametros>()
                    .HasMany(e => e.ParametroJoinEmpresa)
                    .WithRequired(e => e.Parametros)
                    .WillCascadeOnDelete(false);
    Acho que é isso.



    quinta-feira, 14 de agosto de 2014 20:21