我正在使用UConnector下载订单并更新状态。实际下载按预期工作,但当我尝试更新状态时,我收到错误。我已经对导致代码中的错误的行进行了评论。我希望有人能告诉我我错过了什么?
我的Component.config
<configuration>
<components>
<component
id="SessionProvider"
service="UCommerce.EntitiesV2.ISessionProvider, UCommerce"
type="UCommerce.EntitiesV2.SessionProvider, UCommerce"/>
<component id="UCommerce.DataMappingsTag"
service="UCommerce.EntitiesV2.IContainsNHibernateMappingsTag, UCommerce"
type="UCommerce.EntitiesV2.MappingAssemblyTag, UCommerce"/>
<component id="OrderService"
service="UCommerce.Transactions.IOrderService, UCommerce"
type="UCommerce.Transactions.OrderService, UCommerce"/>
<component id="Repository"
service="UCommerce.EntitiesV2.IRepository`1, UCommerce"
type="UCommerce.EntitiesV2.Repository`1, UCommerce"/>
</components>
</configuration>
代码
var orderService = ObjectFactory.Instance.Resolve<IOrderService>();
//var newOrderStatus = OrderStatus.Get((int)OrderStatusCode.Processing); //This line
var newOrderStatus = OrderStatus.All().SingleOrDefault(x => x.Name == "Processing"); //OR this line give the same error
orderService.ChangeOrderStatus(item, newOrderStatus);
错误:
ComponentActivator:无法实例化 UCommerce.EntitiesV2.SessionProvider
的InnerException:
{&#34;没有支持该服务的组件 UCommerce.Infrastructure.Configuration.CommerceConfigurationProvider 被发现&#34;}
堆栈追踪:
在 Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstanceCore(ConstructorCandidate 构造函数,Object []参数,类型implType)at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context,ConstructorCandidate构造函数,Object []参数)at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext 上下文) Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext 上下文) Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext 背景,负担负担) Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context,Boolean trackedExternally)at Castle.MicroKernel.Lifestyle.ScopedLifestyleManager&LT;&GT; n__FabricatedMethod3(CreationContext ,布尔) Castle.MicroKernel.Lifestyle.ScopedLifestyleManager&LT;&GT; c__DisplayClass1.b__0(动作
1 afterCreated) at Castle.MicroKernel.Lifestyle.Scoped.DefaultLifetimeScope.GetCachedInstance(ComponentModel model, ScopedInstanceActivationCallback createInstance) at Castle.MicroKernel.Lifestyle.ScopedLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy) at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden) at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired) at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context) at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernelByType(CreationContext context, ComponentModel model, DependencyModel dependency) at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernel(CreationContext context, ComponentModel model, DependencyModel dependency) at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency) at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(ConstructorCandidate constructor, CreationContext context) at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context) at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context) at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden) at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally) at Castle.MicroKernel.Lifestyle.ScopedLifestyleManager.<>n__FabricatedMethod3(CreationContext , Boolean ) at Castle.MicroKernel.Lifestyle.ScopedLifestyleManager.<>c__DisplayClass1.b__0(Action
1 afterCreated)at Castle.MicroKernel.Lifestyle.Scoped.DefaultLifetimeScope.GetCachedInstance(ComponentModel model,ScopedInstanceActivationCallback createInstance)at Castle.MicroKernel.Lifestyle.ScopedLifestyleManager.Resolve(CreationContext 上下文,IReleasePolicy releasePolicy)at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context,Boolean requiresDecommission,Boolean instanceRequired, 负担和放大器;负担) Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context,Boolean instanceRequired)at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext 上下文) Castle.MicroKernel.Handlers.DefaultGenericHandler.Resolve(CreationContext context,Boolean instanceRequired)at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext 在Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler 处理程序,类型服务,IDictionary additionalArguments,IReleasePolicy 政策) Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(类型 服务,IDictionary参数,IReleasePolicy政策)at Castle.MicroKernel.DefaultKernel.Resolve(类型服务,IDictionary 参数)在Castle.Windsor.WindsorContainer.ResolveT at UCommerce.Infrastructure.ObjectFactory.ResolveT at UCommerce.EntitiesV2.OrderStatus.GetRepo()at UCommerce.EntitiesV2.OrderStatus.All()at SiteConnector.Classes.OrdersListToCalClub.Send(IEnumerable`1输入)
答案 0 :(得分:1)
我发现你实际上需要更多的dll然后你会想。 这是我所包含的两个截图(项目中的引用和lib文件夹)。我正在与sitecore集成,但你可以用我想的Umbracco对应的那些替代这些dll。
这是我用来更新订单状态的代码。该列表包含我的情况下的订单行(我在azure存储中保存了一个列表,所以你也会看到一些dll)。
ISession session = new SessionProvider("connectionstring").GetSession();
OrderStatus status = session.Query<OrderStatus>().FirstOrDefault(os => os.Name.Equals("Processing"));
foreach (PurchaseOrder order in list.Select(o => o.PurchaseOrder))
{
order.OrderStatus = status;
session.Save(order);
}
session.Flush();
答案 1 :(得分:1)
这会将采购订单更新为它在ord.OrderStatusName
中找到的任何状态。此外,我发现如果处理超过200条记录,不清除会话可能会减慢速度。
foreach (CcOrder ord in input)
{
PurchaseOrder poOrder =
_session.Query<PurchaseOrder>().FirstOrDefault(p => p.OrderNumber == ord.OrderId);
OrderStatus newOrderStatus = _session.Query<OrderStatus>().FirstOrDefault(p => p.Name == ord.OrderStatusName);
if (poOrder == null || newOrderStatus == null) continue; //If one or both not found go to next
poOrder.OrderStatus = newOrderStatus;
_session.Save(poOrder);
_session.Flush();
_session.Clear();
}