Как можно сказать кровавому Entity Framework отображать отношения с нужными столбцами!
У меня есть 1 таблица:
public class ShedPart
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public int GroupId { get; set; }
public int ParentGroupId { get; set; }
public string GroupName { get; set; }
[ForeignKey("GroupId")]
[InverseProperty("ParentGroupId")]
public ICollection<Part> ParentParts { get; set; }
}
Каждая часть может иметь несколько ParentParts ...
SQL генерируется так:
SELECT
`Project1`.`Id`,
`Project1`.`Name`,
`Project1`.`GroupId`,
`Project1`.`ParentGroupId`,
`Project1`.`GroupName`,
`Project1`.`C1`,
`Project1`.`Id1`,
`Project1`.`Name1`,
`Project1`.`GroupId1`,
`Project1`.`ParentGroupId1`,
`Project1`.`GroupName1`
FROM (SELECT
`Extent1`.`Id`,
`Extent1`.`Name`,
`Extent1`.`GroupId`,
`Extent1`.`ParentGroupId`,
`Extent1`.`GroupName`,
`Extent2`.`Id` AS `Id1`,
`Extent2`.`Name` AS `Name1`,
`Extent2`.`GroupId` AS `GroupId1`,
`Extent2`.`ParentGroupId` AS `ParentGroupId1`,
`Extent2`.`GroupName` AS `GroupName1`
CASE WHEN (`Extent2`.`Id` IS NULL) THEN (NULL) ELSE (1) END AS `C1`
FROM `Parts` AS `Extent1` LEFT OUTER JOIN `Parts` AS `Extent2` ON `Extent1`.`Id` = `Extent2`.`GroupId`) AS `Project1`
ORDER BY
`Id` ASC,
`C1` ASC}
Как вы можете видеть, это неправильно, так как это соединение таблиц с Id => GroupId, когда я пытаюсь присоединиться с помощью ParentGroupId => GroupId.
Итак, я пытаюсь это:
modelBuilder.Entity<Part>()
.HasMany(s => s.ParentParts)
.WithMany()
.Map(m =>
{
m.ToTable("parts");
m.MapLeftKey("GroupId");
m.MapRightKey("ParentGroupId");
});
Делает то же самое ..... Кажется, Entity Framework будет отображаться только в ключевой столбец! Как заставить это связать столбцы, которые я хочу?