C# 以多对多关系映射两个表

C# 以多对多关系映射两个表,c#,entity-framework-5,fluent-interface,C#,Entity Framework 5,Fluent Interface,我正在使用fluentapi实现一个实体框架和代码优先技术 我已经有一个表的映射: modelBuilder.Entity<Certificate>() .HasMany( c => c.Employees ).WithMany( e => e.Certificates ) .Map( m => { m.ToTable( "Employee_Certificate" );

我正在使用fluentapi实现一个实体框架和代码优先技术

我已经有一个表的映射:

modelBuilder.Entity<Certificate>()
            .HasMany( c => c.Employees ).WithMany( e => e.Certificates )
                .Map( m => {
                    m.ToTable( "Employee_Certificate" );
                    m.MapLeftKey( "CertificateId" );
                    m.MapRightKey( "EmployeeId" );
                } );
modelBuilder.Entity()
.拥有许多(c=>c.员工)。拥有许多(e=>e.证书)
.Map(m=>{
m、 ToTable(“员工证书”);
m、 MapLeftKey(“CertificateId”);
m、 MapRightKey(“员工ID”);
} );
我想知道的是,我是否也需要为Employee实体进行等效映射

比如:

modelBuilder.Entity<Employee>()
            .HasMany( e => e.Certificates ).WithMany( c => c.Employees )
                .Map( m => {
                    m.ToTable( "Employee_Certificate" );
                    m.MapLeftKey( "EmployeeId" );
                    m.MapRightKey( "CertificateId" );
                } );
modelBuilder.Entity()
.拥有许多(e=>e.证书)。拥有许多(c=>c.员工)
.Map(m=>{
m、 ToTable(“员工证书”);
m、 MapLeftKey(“员工ID”);
m、 MapRightKey(“CertificateId”);
} );

或者一个简单的
有很多(…)。有很多(…)
就足够了吗?

不,你没有,只需要在两个实体中的一个上做就足够了谢谢。这样做对双方都有什么影响?它是冗余的,没有任何影响,还是会导致潜在的N+1情况?我已经尝试创建一个声明配置的db两次,它按照我的预期创建了db,因此2个配置应该共存,没有问题。但就我个人而言,我只保留1。理想情况下,这很好,但由于表映射位于域类文件中,我可能无法控制它是否已声明一次或两次。我从扩展模型构建器迁移到继承自
EntityTypeConfiguration
类的类映射设计中,无论哪种方式都非常有效。非常感谢。