C# 错误-“;指定的LINQ表达式包含对与不同上下文关联的查询的引用。”;
我正在使用NopCommerce并使用本教程制作插件: 但当我运行应用程序时,我收到以下错误: “指定的LINQ表达式包含对以下查询的引用: 与不同的背景有关” 依赖注册商类别:C# 错误-“;指定的LINQ表达式包含对与不同上下文关联的查询的引用。”;,c#,.net,asp.net-mvc,nopcommerce,C#,.net,Asp.net Mvc,Nopcommerce,我正在使用NopCommerce并使用本教程制作插件: 但当我运行应用程序时,我收到以下错误: “指定的LINQ表达式包含对以下查询的引用: 与不同的背景有关” 依赖注册商类别: public class LookDependencyRegistrar : IDependencyRegistrar { private const string CONTEXT_NAME = "nop_object_context_look"; p
public class LookDependencyRegistrar : IDependencyRegistrar
{
private const string CONTEXT_NAME = "nop_object_context_look";
public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder)
{
//data layer
var dataSettingsManager = new DataSettingsManager();
var dataProviderSettings = dataSettingsManager.LoadSettings();
if (dataProviderSettings != null && dataProviderSettings.IsValid())
{
//register named context
builder.Register<IDbContext>(c => new LookObjectContext(dataProviderSettings.DataConnectionString))
.Named<IDbContext>("nop_object_context_Look")
.InstancePerHttpRequest();
builder.Register<IDbContext>(c => new Look_Product_MappingObjectContext(dataProviderSettings.DataConnectionString))
.Named<IDbContext>("nop_object_context_Look_Product")
.InstancePerHttpRequest();
builder.Register<LookObjectContext>(c => new LookObjectContext(dataProviderSettings.DataConnectionString))
.InstancePerHttpRequest();
builder.Register<Look_Product_MappingObjectContext>(c => new Look_Product_MappingObjectContext(dataProviderSettings.DataConnectionString))
.InstancePerHttpRequest();
}
else
{
//register named context
builder.Register<IDbContext>(c => new LookObjectContext(c.Resolve<DataSettings>().DataConnectionString))
.Named<IDbContext>("nop_object_context_Look")
.InstancePerHttpRequest();
builder.Register<IDbContext>(c => new Look_Product_MappingObjectContext(dataProviderSettings.DataConnectionString))
.Named<IDbContext>("nop_object_context_Look_Product")
.InstancePerHttpRequest();
builder.Register<LookObjectContext>(c => new LookObjectContext(c.Resolve<DataSettings>().DataConnectionString))
.InstancePerHttpRequest();
builder.Register<Look_Product_MappingObjectContext>(c => new Look_Product_MappingObjectContext(c.Resolve<DataSettings>().DataConnectionString))
.InstancePerHttpRequest();
}
//override required repository with our custom context
builder.RegisterType<EfRepository<Look>>()
.As<IRepository<Look>>()
.WithParameter(ResolvedParameter.ForNamed<IDbContext>("nop_object_context_Look"))
.InstancePerHttpRequest();
builder.RegisterType<EfRepository<Look_Product_Mapping>>()
.As<IRepository<Look_Product_Mapping>>()
.WithParameter(ResolvedParameter.ForNamed<IDbContext>("nop_object_context_Look_Product"))
.InstancePerHttpRequest();
//Register services
builder.RegisterType<LookService>().As<ILookService>();
}
public int Order
{
get { return 0; }
}
}
公共类LookDependencyRegistrator:IDEPendencyRegistrator
{
private const string CONTEXT\u NAME=“nop\u object\u CONTEXT\u look”;
公共虚拟无效寄存器(ContainerBuilder、ITypeFinder和typeFinder)
{
//数据层
var datasettingmanager=new datasettingmanager();
var dataProviderSettings=DataSettingManager.LoadSettings();
if(dataProviderSettings!=null&&dataProviderSettings.IsValid()
{
//寄存器命名上下文
Register(c=>newlookObjectContext(dataProviderSettings.DataConnectionString))
.Named(“nop\u object\u context\u Look”)
.InstancePerHttpRequest();
builder.Register(c=>new Look\u Product\u MappingObjectContext(dataProviderSettings.DataConnectionString))
.命名(“nop\u对象\u上下文\u外观\u产品”)
.InstancePerHttpRequest();
Register(c=>newlookObjectContext(dataProviderSettings.DataConnectionString))
.InstancePerHttpRequest();
builder.Register(c=>new Look\u Product\u MappingObjectContext(dataProviderSettings.DataConnectionString))
.InstancePerHttpRequest();
}
其他的
{
//寄存器命名上下文
Register(c=>newlookObjectContext(c.Resolve().DataConnectionString))
.Named(“nop\u object\u context\u Look”)
.InstancePerHttpRequest();
builder.Register(c=>new Look\u Product\u MappingObjectContext(dataProviderSettings.DataConnectionString))
.命名(“nop\u对象\u上下文\u外观\u产品”)
.InstancePerHttpRequest();
Register(c=>newlookObjectContext(c.Resolve().DataConnectionString))
.InstancePerHttpRequest();
Register(c=>newlook\u Product\u MappingObjectContext(c.Resolve().DataConnectionString))
.InstancePerHttpRequest();
}
//使用自定义上下文覆盖所需的存储库
builder.RegisterType()
.As()
.WithParameter(ResolvedParameter.ForName(“nop\u object\u context\u Look”))
.InstancePerHttpRequest();
builder.RegisterType()
.As()
.WithParameter(ResolvedParameter.ForName(“nop\u对象\u上下文\u外观\u产品”))
.InstancePerHttpRequest();
//注册服务
builder.RegisterType().As();
}
公共秩序
{
获取{返回0;}
}
}
如何解决这个问题?我认为这是因为您在插件中创建的实体包含Nop.Core实体(如产品)之间的关系
实体框架不支持跨项目关系。您必须从实体中删除Nop.Core实体,例如(产品属性),并使用ProductId int。错误消息非常简单。您正在构造一个引用来自多个数据源的对象的查询。它不能处理那个。请将查询分开,或者使用单个数据源。从它的外观来看,
LookObjectContext
和Look\u Product\u MappingObjectContext
访问相同的连接字符串,因此应该可以将它们合并到一个DbContext