Entity framework Ef代码优先映射

Entity framework Ef代码优先映射,entity-framework,ef-code-first,Entity Framework,Ef Code First,我有一个奇怪的情况 我有3个实体: public class Product { public virtual int id {get;set;} } public class Media { public virtual ICollection<MediaProduct> mediaProducts {get;set;} } public class MediaProduct { public virtual int id {get;set;} pub

我有一个奇怪的情况

我有3个实体:

public class Product
{
   public virtual int id {get;set;}
}

public class Media
{
   public virtual ICollection<MediaProduct> mediaProducts {get;set;}
}

public class MediaProduct 
{
   public virtual int id {get;set;}
   public virtual Media media {get;set;}
   public virtual Product product {get;set;}

   public virtual int productId { get; set; }
   public virtual int mediaId { get; set; }
}
公共类产品
{
公共虚拟整数id{get;set;}
}
公共类媒体
{
公共虚拟ICollection mediaProducts{get;set;}
}
公共类媒体产品
{
公共虚拟整数id{get;set;}
公共虚拟媒体{get;set;}
公共虚拟产品产品{get;set;}
公共虚拟int productId{get;set;}
公共虚拟int mediaId{get;set;}
}
正如您在我的产品实体中看到的,我没有对MediaProduct的引用,我无法更改它

我不知道怎样才能映射这些实体

我的映射类是

public class MediaProcutMap : EntityTypeConfiguration<MediaProduct>
    {
        public MediaProcutMap()
        {
            this.ToTable("Media_Product_Mapping");
            this.HasKey(pc => pc.Id);

            this.HasRequired(pc => pc.media)
                .WithMany(c => c.mediaProducts)
                .HasForeignKey(pc => pc.mediaId);

            //this.HasRequired(pc => pc.product) ???                
        }
    }
公共类MediaProcutMap:EntityTypeConfiguration { 公共MediaProcutMap() { 此.ToTable(“媒体产品映射”); this.HasKey(pc=>pc.Id); 此.HasRequired(pc=>pc.media) .WithMany(c=>c.mediaProducts) .HasForeignKey(pc=>pc.mediaId); //此.HasRequired(pc=>pc.product)??? } } 但它不起作用

请帮帮我


Marco

有一个超负荷的
,其中有许多不带参数的

public class MediaProcutMap : EntityTypeConfiguration<MediaProduct>
{
        public MediaProcutMap()
        {
            this.ToTable("Media_Product_Mapping");
            this.HasKey(pc => pc.Id);

            this.HasRequired(pc => pc.media)
                .WithMany(c => c.mediaProducts)
                .HasForeignKey(pc => pc.mediaId);

            this.HasRequired(pc => pc.product).
                .WithMany()
                .HasForeignKey(pc => pc.productId);              
        }
 }
公共类MediaProcutMap:EntityTypeConfiguration { 公共MediaProcutMap() { 此.ToTable(“媒体产品映射”); this.HasKey(pc=>pc.Id); 此.HasRequired(pc=>pc.media) .WithMany(c=>c.mediaProducts) .HasForeignKey(pc=>pc.mediaId); 此.HasRequired(pc=>pc.product)。 .有很多 .HasForeignKey(pc=>pc.productId); } }
Hi Eranga,感谢您的帮助,但它仍然给我相同的错误:无法确定类型之间关联的主体端感谢您的帮助,这是我的完整错误::“无法确定类型“xxx.MediaProduct”和“xxx.Product”之间关联的主体端。”。必须使用关系fluent API或数据批注显式配置此关联的主端。“@Marcolo您在
Product
类中有
MediaProduct
类型属性吗?检查您是否正确添加了映射。我在问题中如何说我无法修改产品,因为它来自其他库,因此我遇到了此问题,您认为这是可能的还是必须有其他参考?