如何使用 Entity Framework 创建多个仅具有单侧导航属性的多对多关系?

How to create multiple many-to-many relationships with only one-sided navigation properties using Entity Framework?

我有两个表映射到 POCO 实体,首先使用 Entity Framework 的代码 API。

表格是 CatalogValuePerson

我想通过 Person 的导航属性在这些表之间创建 2 个多对多关系:AddressesOrganisations

不得不说我不想给CatalogValue添加导航属性。

这是我当前的代码:

 modelBuilder.Entity<Person>()
             .HasMany(a => a.Addresses)
             .WithOptional()
             .Map(c =>
             {
                  c.ToTable("PersonAddressMapping");
             });

 modelBuilder.Entity<Person>()
             .HasMany(a => a.Organisations)
             .WithOptional()
             .Map(c =>
             {
                  c.ToTable("PersonOrganisationMapping");
             });

这是我得到的错误:

The specified table 'PersonAddressMapping' was not found in the model. 
Ensure that the table name has been correctly specified.

我认为您在这里使用 WithOptional() 是不正确的。要配置多对多,您可以在 HasMany() 之后使用 WithMany()。您仍然不必指定集合。尝试像这样配置。

 modelBuilder.Entity<Person>()
         .HasMany(a => a.Addresses)
         .WithMany()
         .Map(c =>
         {
              c.ToTable("PersonAddressMapping");
         });