指定的包含路径无效.EntityType'SpiceShop.Models.Product'未声明名为'Products'的导航属性

use*_*713 3 c# linq asp.net-mvc

我有包含2个表的数据库

TABLE Categories (CategoriesId, Name, Description)
TABLE Products (ProductId, CategoriesId, Title, ProductImageUrl)
Run Code Online (Sandbox Code Playgroud)

类别通过CategoriesId链接到Products.

我正在尝试使用LINQ获取所有特定标题.

 public ActionResult Browse(string categories)
 {
     var spices = spiceDB.Products.Include("Products").Single(p => p.Title == categories);                 
     return View(spices);
 }
Run Code Online (Sandbox Code Playgroud)

产品型号

namespace SpiceShop.Models
{
    public class Product
    {
        [Key]
        public int ProductId { get; set; }

        public int CategoriesId { get; set; }
        public string Title { get; set; }

        public string ProductImageUrl { get; set; }
        public List <Categorie> Name { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

分类模型

namespace SpiceShop.Models
{
    public class Categorie
    {
        [Key]
        public int CategoriesId { get; set; }
        public string Name  { get; set; }

        public string Description { get; set; }
        //public List<Product> ProductId { get; set; }
        public List<Product> Products { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fel*_*tro 6

只需删除.Include("Products"),这不是它的使用方式.

错误很明显,"产品"模型中没有"产品"属性.

  • 那是因为序列不包含任何元素.你的表情看起来错了.你可能意味着像.Single(p => p.Categories.Name == category); 因为你传入了类别,我认为这是一个你需要先解析的分隔列表.如果我错了,那么你应该重命名变量,因为它们令人困惑. (3认同)