【问题标题】:Get multiple tables data through Entity Framework with Generic Repository and Unit Of work通过具有通用存储库和工作单元的实体框架获取多个表数据
【发布时间】:2016-02-07 11:51:48
【问题描述】:

我正在开发 Web-API 项目并使用具有通用存储库和工作单元的实体框架。基本上我遵循this 的教程。

这是我的表架构。

实体

    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、价格、数量

【问题讨论】:

  • 你在课堂上是不是缺少public List&lt;SecondaryProductEntity&gt; objSecondaryProduct {get;set;} PrimaryProductEntity 。我也是实体框架的新手。

标签: entity-framework linq generics asp.net-mvc-5 unit-of-work


【解决方案1】:

您的产品实体类不需要List&lt;PrimaryProductEntity&gt;List&lt;SecondaryProductEntity&gt;。我想根据您的类图,每个Product 都与一个PrimaryProductEntity 和一个SecondaryProductEntity 相关联。

一旦您的模型类得到纠正,您就可以访问导航的属性。我不太擅长按照你想要的方式编写查询。但我希望你能知道你应该做什么

【讨论】:

  • 那么我是如何做到这一点的。
  • 您应该能够以obj.PrimaryProductEntity.ProductName 身份访问属性
  • 当您将产品保存到数据库中时,我猜您选择了它所属的主要产品类别和次要产品类别。那么它就可以实现了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多