我的域模型中有两个实体:
public class Configuration : DomainEntity
{
public virtual ICollection<Hardware> Hardwares { get; set; }
public Configuration()
{
Hardwares = new List<Hardware>();
}
}
public class Hardware : DomainEntity
{
public virtual ICollection<Configuration> Configurations { get; set; }
public Hardware()
{
Configurations = new HashSet<Configuration>();
}
}
我在数据库中有三个表。我绑定这些表:
modelBuilder.Entity<Configuration>().
HasMany<Hardware>(configuration => configuration.Hardwares).
WithMany(hardware => hardware.Configurations).
Map(map => map.ToTable("tblConfiguration_Hardware"));
它工作正常,但是...当我添加相同的硬件,例如三个硬件时,我在数据库中一条记录。
Hardware hardware = db.Find<Hardware>(hardwareID);
configuration.Hardwares.Add(hardware); // first
configuration.Hardwares.Add(hardware); // second
configuration.Hardwares.Add(hardware); // third
db.Add<Configuration>(configuration);
db.SaveChanges();
但我想保存三个关系。我错了什么?
答案 0 :(得分:2)
你不能用多对多的关系做到这一点。您必须将Configuration_Hardware
建模为具有与Configuration
和Hardware
的一对多关系的单独实体。
它不起作用的原因是隐藏联结表的多对多关系期望联结表中使用的FK形成复杂的PK,但在您的情况下,您有单独的PK,因此您必须将其映射为单独的实体