实体框架 - 尽管被SQL

时间:2016-02-02 07:30:30

标签: c# entity-framework ef-code-first fluent-interface

我正在尝试向现有实体ProductRevComp添加新的子实体,产品组件ProductRev。但是,当我检索ProductRev类的实例时,从不填充Comps集合(即使明确地Including()它)。我相信我已经正确地映射了所有内容,但它比我想要的更多,这是最容易隐藏错误的地方。但是,对SQL语句进行概要分析表明相关列正在填充正确的数据。

检查db.ProductRevComps(即我所有comp的DbSet)显示可以加载记录,并且该映射按预期工作。

映射:

    public class ProductRevConfiguration : EntityTypeConfiguration<ProductRev>
    {
        public ProductRevConfiguration()
        {
            HasKey(p => p.ProductRevId);
            HasMany(p => p.Comps).WithRequired().HasForeignKey(p => p.ParentProductRevId);
            Ignore(p => p.ProgrammedParts);
        }
    }

    public class ProductRevCompConfiguration : EntityTypeConfiguration<ProductRevComp>
    {
        public ProductRevCompConfiguration()
        {
            HasKey(p => new { p.ParentProductRevId, p.CompProductRevId });
            HasRequired(p => p.ParentProductRev).WithMany().HasForeignKey(p => p.ParentProductRevId);
            HasRequired(p => p.CompProductRev).WithMany().HasForeignKey(p => p.CompProductRevId);
        }
    }

产品实体(非常简化):

public class ProductRev
{
    public string ProductRevId { get; set; }
    public virtual List<ProductRevComp> Comps { get; set; }
    public virtual List<ProductRevComp> ProgrammedParts { get { return Comps; } }//Will be filtered once I get this working

    public ProductRev() { }
}    

Comp实体:

public class ProductRevComp
{
    public string ParentProductRevId { get; set; }
    public virtual ProductRev ParentProductRev { get; set; }

    public string CompProductRevId { get; set; }
    public virtual ProductRev CompProductRev { get; set; }

    public int CompTypeValue { get; set; }
    public ProductRevCompType CompType
    {
        get { return (ProductRevCompType)CompTypeValue; }
        set { CompTypeValue = (int)value; }
    }

    public enum ProductRevCompType { ProgrammedPart = 1 };

    public ProductRevComp() { }

    public override string ToString()
    {
        return base.ToString();
    }

}

删除额外的编程部分集合不会改变任何内容。

如何在不诉诸手动数据库命令的情况下让ProductRev实体填充Comps属性?

(必须在办公室关闭时运行,我没有钥匙 - 我希望我已经包含了所有细节,如果有任何遗漏,请发表评论。)

0 个答案:

没有答案