选择列:包含路径表达式必须引用在类型上定义的导航属性

时间:2015-10-28 22:32:11

标签: c# linq entity-framework-6 entity entity-framework-6.1

我需要一些优化lambda表达式的帮助。

实体

    public class ProductGroup 
    {

        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Key]
        public int Id { get; set; }

        [Required]
        [Index(IsUnique = true)]
        [StringLength(50)]
        public string Code { get; set; }

        [Required]
        [StringLength(50)]
        public string Name { get; set; }

        public virtual ICollection<GroupProduct> GroupProducts { get; set; }

    }

    public class GroupProduct 
    {

            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            [Key]
            public int Id { get; set; }

            // Foreign Key
            public int ProductGroupId { get; set; }
            public int ProductId { get; set; }

            // Navigation Properties
            [Required]
            [ForeignKey("ProductGroupId")]
            public virtual ProductGroup ProductGroup { get; set; }

            [Required]
            [ForeignKey("ProductId")]
            public virtual Product Product { get; set; }    
        }

    public class Product
        {

            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            [Key]
            public int Id { get; set; }

            [Required]
            [Index(IsUnique = true)]
            [StringLength(50)]
            public string Code { get; set; }

            [Required]
            [StringLength(100)]
            public string Name{ get; set; }
    }

目前使用的表达

var q = context.ProductGroups.Where(s => s.Code == code)
            .Include(s => s.GroupProduct.Select(p => p.Product));

Product实体中有更多列。我正在尝试优化表达式,以便在Product.Code列上生成SQL时,而不是整个Product表,以及相关的GroupProduct和拥有的ProductGroup。

当我尝试&#34;过滤&#34;产品实体我收到错误:

  

包含路径表达式必须引用导航   属性在类型上定义。使用虚线路径作为参考   导航属性和集合的Select运算符   导航属性。参数名称:路径

有什么想法吗?

0 个答案:

没有答案