Ошибка: "Указанное выражение LINQ содержит ссылки на запросы, связанные с различными контекстами".

Я использую NopCommerce и создаю плагин, используя этот учебник: Плагин с доступом к данным

Но когда я запускаю приложение, я получаю следующую ошибку:

Msgstr "Указанное выражение LINQ содержит ссылки на запросы, связанные с различными контекстами".

Класс DependencyRegistrar:

 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; }
            }
        }

Как я могу решить эту проблему?

1 ответ

Решение

Я думаю, это потому, что ваши сущности, которые вы создали в плагине, содержат отношение между сущностью Nop.Core, такой как Product.

Entity Framework не поддерживает межпроектные отношения. Вы должны удалить сущность Nop.Core, например (свойство Product), из вашей сущности и использовать взамен ProductId int.

Другие вопросы по тегам