如何使用 Entity Framework 创建多个仅具有单侧导航属性的多对多关系?
How to create multiple many-to-many relationships with only one-sided navigation properties using Entity Framework?
我有两个表映射到 POCO 实体,首先使用 Entity Framework 的代码 API。
表格是 CatalogValue
和 Person
。
我想通过 Person 的导航属性在这些表之间创建 2 个多对多关系:Addresses
和 Organisations
。
不得不说我不想给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");
});
我有两个表映射到 POCO 实体,首先使用 Entity Framework 的代码 API。
表格是 CatalogValue
和 Person
。
我想通过 Person 的导航属性在这些表之间创建 2 个多对多关系:Addresses
和 Organisations
。
不得不说我不想给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");
});