首先是Ef代码映射

时间:2011-12-16 13:51:11

标签: 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;}
   public virtual Media media {get;set;}
   public virtual Product product {get;set;}

   public virtual int productId { get; set; }
   public virtual 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) ???                
        }
    }

但它不起作用

请帮帮我

1 个答案:

答案 0 :(得分:1)

WithMany的重载不带参数。

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);              
        }
 }