У меня есть плагин с 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 . Спасибо.