Соедините таблицу плагинов с таблицей NopCommerce - PullRequest
0 голосов
/ 08 января 2020

У меня есть плагин с ObjectContext , который генерирует и работает с Table1 .

Table1 must join с таблицей product , чтобы показать что-то в админке.

Я знаю, что, поскольку мои ObjectContext и NopCommerce ObjectContext - это два разных контекста, они не может соединиться друг с другом.

Поэтому мой вопрос заключается в том, как мне сопоставить существующую таблицу продуктов с моим ObjectContext , чтобы выполнить операцию соединения ?

Или это лучший способ?

В настоящее время я извлекаю Все строки из две таблицы из два контекста , затем я присоединяюсь к ним, который не эффективен :

var Result = (_DbRepoProductAnalyser.Table.AsEnumerable()
            .Join(_DbRepoProducts.Table.Select(p=>new{Id=p.Id,PrdName=p.Name}).AsEnumerable()
            ,pa=>pa.IdProduct,pr=>pr.Id,(pa,pr)=>new {pa,pr})
            .Select(x=>new AnalyseModel
            {
                Id=x.pa.Id,
                Analysecount=x.pa.Analysecount,
                AnalyseMax=x.pa.AnalyseMax,

                ProductName=x.prd.PrdName
            })).ToList();

Полный код:

using System;
using System.Linq;
using Nop.Core;
using Nop.Core.Caching;
using Nop.Core.Data;
using Nop.Core.Domain.Catalog;
using Nop.Services.Configuration;
using NopTop.Plugin.Widgets.AnalyseProduct.Domain;
using NopTop.Plugin.Widgets.AnalyseProduct.Models;

namespace NopTop.Plugin.Widgets.AnalyseProduct.Services
{
    public partial class AnalyseProductAdminService : IAnalyseProductAdminService
    {
        private IRepository<Product> _DbRepoProducts;
        private readonly IRepository<NopTop_tbl_ProductAnalyser> _DbRepoProductAnalyser;

        public AnalyseProductAdminService(
            IRepository<Product> _DbRepoProducts,
            IRepository<NopTop_tbl_ProductAnalyser> _DbRepoProductAnalyser
        )
        {
            this._DbRepoProducts = _DbRepoProducts;
            this._DbRepoProductAnalyser = _DbRepoProductAnalyser;
        }

        public IPagedList<AnalyseModel> GetAnalyseProductDomain(int pageIndex = 0, int pageSize = int.MaxValue)
        {
            var Result = (_DbRepoProductAnalyser.Table.AsEnumerable()
                .Join(_DbRepoProducts.Table.Select(p=>new{Id=p.Id,PrdName=p.Name}).AsEnumerable()
                ,pa=>pa.IdProduct,pr=>pr.Id,(pa,pr)=>new {pa,pr})
                .Select(x=>new AnalyseModel
                {
                    Id=x.pa.Id,
                    Analysecount=x.pa.Analysecount,
                    AnalyseMax=x.pa.AnalyseMax,

                    ProductName=x.prd.PrdName
                })).ToList();
        }
    }
}

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

...