我试图从我的模型中的一个实体导航到另一个实体。但我似乎无法做到正确:
以下是我的实体:
public class Import
{
public int Id { get; set; }
public DateTime Date { get; set; }
...
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
...
}
public class PersonParameter
{
public int Id {get;set;}
public int PersonId { get; set; }
public int ImportId { get;set; }
...
public virtual Person Person { get; set; }
public virtual Import Import { get; set; }
}
public class ImportDetails
{
public int Id { get; set; }
public int PersonId { get; set; }
public int ImportId { get; set; }
...
public virtual Import Import { get; set; }
public virtual Person Person { get; set; }
public virtual PersonParameter PersonParameters { get; set; }
}
对于每次导入,一个人都有一组PersonParameters以及一些需要了解PersonParameters的ImportDetails。
现在EF认为这是一对多的关系,并在生成数据库时将ImportDetail_Id添加到表中。它不是。我希望EF能够使用已经存在的密钥。
基本上我喜欢EF为我创建这个SQL:
select * from importDetails d
left join PersonParameter pp on d.importId = pp.importid and d.PersonId = pp.PersonId
答案 0 :(得分:0)
您也可以使用Map配置n-m关系 我不明白你的模型,但你的n-m配置应该类似于这个
modelBuilder.Entity<User>()
.HasMany<Car>(user => user.OwnedCars)
.WithMany(car => car.Owners)
.Map(mapping =>
{
mapping.MapLeftKey("OwnerId");
mapping.MapRightKey("CarId");
mapping.ToTable("Owner_Car");
});