我正在向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文件中显示正确映射。有没有人知道为什么会发生这种情况的任何明显原因,或许我可能错过了什么,另一个在其他地方?
干杯, 约翰
答案 0 :(得分:0)
您可能想要检查是否更新了OrderObjectMappings.xml中的所有位置
例如在此节点中
<ClassTableMap Class="PurchaseOrder" Table="PurchaseOrders">
其中一个
<PropertyMap ... />
行可能有误?
答案 1 :(得分:0)
OrderObjectMapping.xml 文件的 StorageMap 根元素有3个子元素,用于处理表和类之间以及表列和类属性之间的映射。
Tables 元素将每个子表元素映射到物理数据库表。每个子列元素都映射到物理数据库字段。
类元素包含与每个Commerce Server 2007 API类对应的子 Class 元素。开箱即用的属性和属性列表的扩展名作为子属性元素存在。
Mappings 元素负责将 Tables 元素中的每个子表元素映射到子类 类元素的元素。此元素驱动物理数据库表及其列的映射到该类的类和子属性。
为了扩展OrderObjectMapping.xml文件中的PurchaseOrder设置以包含新的“ ConcessionOrder ”属性,您的文件需要包含对表的修改, 类和映射元素如下所示。
注意:我假设您使用位字段来模拟布尔值ConcessionOrder属性...