Как я могу получить количество продуктов в моей БД? - PullRequest
0 голосов
/ 11 июля 2019

ОБНОВЛЕНИЕ: я пытаюсь добиться чего-то подобного

имя_идентификатора

1 футболки (245 в наличии)

2 футболки (170 в наличии)

3 брюк (400 в наличии)

У меня есть иерархия категорий в списке товаров.

Как узнать количество каждого продукта в моем коде ниже

как-то так

products = u.Department_Category_Registration.Products.Count();  (For each 

уникальный продукт, например, футболки (12 в наличии), брюки (200в наличии), обувь (100 в наличии)

, который был закомментирован в приведенном ниже коде

    return View(await _context.Departments_SubCategory_Registration.Include(c =>        c.Departments_Category_Registration)
            .Where(d => d.Departments_Category_Registration.Category_Name.Contains(C))
              .Where(r => r.IsEnabled == true).Select(u => new      Departments_SubCategory_Registration
              {
                  CategoryID = u.CategoryID,
                  SubCategory_Name = u.SubCategory_Name,
                  EntryDate = u.EntryDate,
                  Description_Detailed = u.Description_Detailed,
                  Description_Short = u.Description_Short 

                // e.g. I am trying to get 
                // products = u.Department_Category_Registration.Products.Count();

              }).ToListAsync());

ОБНОВЛЕНО - Вот мои модели 1. продукты 2. Department_Category_Registration 3. Department_subCategory_Registration

верхняя иерархия - от 3 до 1

public class Products
{
    [Key]
    public int ProductID { get; set; }
    public string Product_Name { get; set; }
    public int SupplierID { get; set; }
    public int SubCategoryID { get; set; }
    [ForeignKey("SubCategoryID")]
    public Departments_SubCategory_Registration Departments_SubCategory_Registration { get; set; }
    public DateTime EntryDate { get; set; }
    public string Product_Code { get; set; }
    public string Description_Short { get; set; }
    public string Description_Long { get; set; }
    public decimal Price_Unit { get; set; }
    public decimal? Price_Advert { get; set; }
    public bool Stock { get; set; }
    public bool IsEnabled { get; set; }

}




public class Departments_SubCategory_Registration
{
    [Key]
    public int SubCategoryID { get; set; }              // This is the PK

  //  [ForeignKey("DepartmentID")]
    public int CategoryID  { get; set; } // this is a FK
    [ForeignKey("CategoryID")]
    public Departments_Category_Registration Departments_Category_Registration { get; set; }


    [ForeignKey("SubCategoryID")]
    public Products Products { get; set; }
    public string SubCategory_Name { get; set; }
    public DateTime EntryDate { get; set; }
    public string Description_Short { get; set; }
    public string Description_Detailed { get; set; }
    public string Notes { get; set; }
   // public string Reference { get; set; }
    public Guid UniqueId { get; set; }
    public bool IsEnabled { get; set; }


}




public class Departments_Category_Registration
{



    [Key]
    public int CategoryID { get; set; }              // This is the PK


    public int DepartmentID { get; set; } // this is a FK

    [ForeignKey("DepartmentID")]
    public Xadosh.Models.Department.Departments Departments { get; set; }

    [ForeignKey("CategoryID")]
    public Departments_SubCategory_Registration Departments_SubCategory_Registrations { get; set; }
    //public List<Departments_SubCategory_Registration> Departments_SubCategory_Registrations { get; set; }
    public string Category_Name { get; set; }
    public DateTime EntryDate { get; set; }
    public string Description { get; set; }
    public string Description_Detail { get; set; }
    public string Notes { get; set; }
    public string Reference { get; set; }
    public Guid UniqueId { get; set; }
    public bool IsEnabled { get; set; }

}

1 Ответ

0 голосов
/ 11 июля 2019

Вы можете создать класс Dto или ViewModel, который будет лучше описывать ваши данные:

Departments_SubCategory_RegistrationViewModel
{
 public int CategoryID  { get; set; } 
 public string SubCategory_Name { get; set; }
 public DateTime EntryDate { get; set; }
 public string Description_Short { get; set; }
 public string Description_Detailed { get; set; }
 public int ProductsCount { get; set; }
}

И тогда вы должны делать что хотите с этим запросом:

return View(
    await _context.Departments_SubCategory_Registration
        .Include(c => c.Departments_Category_Registration)
        .Where(d => d.Departments_Category_Registration.Category_Name.Contains(C))
        .Where(r => r.IsEnabled == true)
        .Select(u => new Departments_SubCategory_RegistrationViewModel
          {
              CategoryID = u.CategoryID,
              SubCategory_Name = u.SubCategory_Name,
              EntryDate = u.EntryDate,
              Description_Detailed = u.Description_Detailed,
              Description_Short = u.Description_Short 
              ProductsCount = u.Products.Count();
          }).ToListAsync());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...