1

Я работаю над проектом Web-API и использую Entity Framework с общим хранилищем и единицей работы. В основном я следую учебнику для this.Получить данные нескольких таблиц через Entity Framework с общим репозиторием и единицей работы

Вот моя архитектура стола. enter image description here

Entity

public class ProductEntity 
    { 
     public int ProductId { get; set; } 
     public string ProductCode { get; set; } 
     public string ProductName { get; set; } 
     public string ProductDescription { get; set; } 
     public string ProductImgName { get; set; } 
     public bool IsActive { get; set; } 
     public int PrimaryCatId { get; set; } 
     public int SecondaryCatId { get; set; } 
     public int Quantity { get; set; } 
     public decimal Price { get; set; } 
     public System.DateTime CreateDate { get; set; } 

     public List<PrimaryProductEntity> objPrimaryProduct { get; set; } 
     public List<SecondaryProductEntity> objSecondaryProduct { get; set; } 
    } 

    public class PrimaryProductEntity 
    { 
     public int PrimaryCatId { get; set; } 
     public string PrimaryCatName { get; set; } 
    } 

    public class SecondaryProductEntity 
    { 
     public int SecondaryCatId { get; set; } 
     public string SecondaryCatName { get; set; } 
     public int PrimaryCatId { get; set; } 
    } 

Услуги Код

 public IEnumerable<BusinessEntities.ProductEntity> GetAllProducts() 
     { 
      var products = _unitOfWork.ProductRepository.GetAll().ToList(); 
      var primaryProducts = _unitOfWork.PrimaryProductRepository.GetAll().ToList(); 
      var secondaryProducts = _unitOfWork.SecondaryProductRepository.GetAll().ToList(); 
      if (products.Any()) 
      { 
       Mapper.CreateMap<tblProduct, ProductEntity>(); 
       var proInfo = from P in products 
          join PP in primaryProducts on P.PrimaryCatId equals PP.PrimaryCatId 
          join SP in primaryProducts on P.SecondaryCatId equals SP.SecondaryCatId 
          select P; 
       var productsModel = Mapper.Map<List<tblProduct>, List<ProductEntity>>(proInfo);//getting error 
       return productsModel; 
      } 
      return null; 
     } 

я знаю, что моя реализация не так, я не знаю, что писать в коде для выборки данных из нескольких таблиц , Пожалуйста, помогите мне.

Необходимые данные

ProductID, ProductName, PrimaryCatName, SecondaryCatName, Цена, Количество

+0

Вам не хватает 'public List objSecondaryProduct {get; set;}' в классе 'PrimaryProductEntity'. Я также новичок в сущности Framework. – Vini

ответ

1

Ваш класс Entity Продукт не требует List<PrimaryProductEntity> и List<SecondaryProductEntity>. Я полагаю, согласно вашей диаграмме классов. Каждый Product связан с одним PrimaryProductEntity и одним SecondaryProductEntity.

Как только ваш модельный класс будет исправлен, вы сможете получить доступ к свойствам навигации. Я не так хорош в написании запроса так, как вы хотите. Но я надеюсь, что вы могли бы получить представление о том, что вы должны делать

+0

так как я достигаю этого. – Anjyr

+0

У вас должен быть доступ к свойствам как 'obj.PrimaryProductEntity.ProductName' – Vini

+0

Когда вы сохраняете продукт в базе данных, я предполагаю, что вы выбираете категорию первичного продукта и категорию товаров Secodary, к которой она принадлежит. Тогда это может быть достигнуто. – Vini