我正在映射我的实体但是当我试图回到实体而没有关系示例时,我有一个名为Medicamento的实体,它有很多定义,但只是得到药剂的属性而没有关系白衣定义。
我的第三张表我有一个复合键我的代码是:
MedicamentoMap
public class MedicamentoMap : EntityTypeConfiguration<Medicamento>
{
public MedicamentoMap()
{
// primaryKey
this.HasKey(m => m.Id);
// propiedades
this.ToTable("Medicamento");
this.Property(m => m.Id).HasColumnName("MedicamentoID");
this.Property(m => m.Descripcion).HasColumnName("Descripcion");
//Relaciones
this.HasMany(p => p.Presentaciones)
.WithMany()
.Map(m =>
{
m.ToTable("MedicamentoPresentacion")
m.MapLeftKey("MedicamentoID");
m.MapRightKey( "PresentacionID");
});
}
}
权利定义是:
public PresentacionMap()
{
// primaryKey
this.HasKey(m => m.Id);
// propiedades
this.ToTable("Presentacion");
this.Property(m => m.Id).HasColumnName("PresentacionID");
this.Property(m => m.Descripcion).HasColumnName("Descripcion");
}
最后第三个实体是drugmentoPresentacion:
public MedicamentoPresentacionMap()
{
// primaryKey
this.HasKey(i => new {i.MedicamentoID, i.PresentacionID});
this.Property(i => i.CodigodeBarras);
this.ToTable("MedicamentoPresentacion");
this.Property(i => i.MedicamentoID).HasColumnName("MedicamentoID");
this.Property(i => i.PresentacionID).HasColumnName("PresentacionID");
this.Property(i => i.CodigodeBarras).HasColumnName("CodigoBarras");
}
答案 0 :(得分:2)
您不能在类模型(HasMany...WithMany
)中同时拥有多对多定义(MedicamentoPresentacion
)和可见联结类。
您必须删除多对多映射,因为您的联结表不是纯联结表(这是一个只包含两个外键的表)。您的联结类还包含条形码(我认为),因此它在业务领域具有意义,它应该是模型的一部分。
请删除HasMany...WithMany
部分,然后转到MedicamentoPresentacionMap
。 Medicamento
和Presentacion
都应该有一个集合属性MedicamentoPresentacions
。 (这使得它成为1-n-1关联)。