Commerce Server 2007 OrderObjectMappings定义错误

时间:2012-08-08 14:37:57

标签: c# asp.net commerceserver2007

我正在向PurchaseOrder对象添加3个新属性,并且已经完成了将3个新列添加到数据库表的过程,更新了PurchaseOrder类,最后更新了OrderObjectMappings.xml文件,以确保类映射中的属性为数据库正确。这一切看起来都正确但是当商务服务器尝试映射时出现以下错误:

  

[MappedClassDataMismatchException:Table PurchaseOrders列   ConcessionOrder与预期列名MarshalledData不匹配   在映射中定义。]
  Microsoft.CommerceServer.Runtime.Orders.POLoader.LoadFromDataSetHelper(数据集   dataSet,ClassInfo [] dependencyClassList,Int32 depClassListLen,   Hashtable [] depInstanceLookup,BinaryFormatter formatter,String   过滤器)+3406
  Microsoft.CommerceServer.Runtime.Orders.POLoader.LoadFromDataSet(数据集   dataSet,OrderGroupCollection ogColl)+1080
  Microsoft.CommerceServer.Runtime.Orders.POLoader.LoadSearchSet(GUID   searchSetId,OrderGroupCollection ogc)+388
  Microsoft.CommerceServer.Runtime.Orders.POLoader.Load(字符串   storedProcName,ListDictionary sqlParameters)+458
  Microsoft.CommerceServer.Runtime.Orders.OrderContext.GetPurchaseOrdersForUser(GUID   userId)+352

ConcessionOrder是我的新属性之一,并且在xml文件中显示正确映射。有没有人知道为什么会发生这种情况的任何明显原因,或许我可能错过了什么,另一个在其他地方?

干杯, 约翰

2 个答案:

答案 0 :(得分:0)

您可能想要检查是否更新了OrderObjectMappings.xml中的所有位置

例如在此节点中

<ClassTableMap Class="PurchaseOrder" Table="PurchaseOrders">

其中一个

<PropertyMap ... /> 

行可能有误?

答案 1 :(得分:0)

OrderObjectMapping.xml 文件的 StorageMap 根元素有3个子元素,用于处理表和类之间以及表列和类属性之间的映射。

TABLES NODE

Tables 元素将每个子元素映射到物理数据库表。每个子元素都映射到物理数据库字段。

CLASSES NODE

元素包含与每个Commerce Server 2007 API类对应的子 Class 元素。开箱即用的属性和属性列表的扩展名作为子属性元素存在。

MAPPINGS NODE

Mappings 元素负责将 Tables 元素中的每个子元素映射到子 元素的元素。此元素驱动物理数据库表及其列的映射到该类的类和子属性。

为了扩展OrderObjectMapping.xml文件中的PurchaseOrder设置以包含新的“ ConcessionOrder ”属性,您的文件需要包含对的修改, 映射元素如下所示。

注意:我假设您使用位字段来模拟布尔值ConcessionOrder属性...

enter image description here