0

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

[MappedClassDataMismatchException:表 PurchaseOrders 列 ConcessionOrder 与映射中定义的预期列名称 MarshalledData 不匹配。]
Microsoft.CommerceServer.Runtime.Orders.POLoader.LoadFromDataSetHelper(DataSet dataSet, ClassInfo[] dependencyClassList, Int32 depClassListLen, Hashtable[] depInstanceLookup, BinaryFormatter 格式化程序, 字符串过滤器) +3406
Microsoft.CommerceServer.Runtime.Orders.POLoader.LoadFromDataSet(DataSet dataSet, OrderGroupCollection ogColl) +1080
Microsoft.CommerceServer.Runtime.Orders.POLoader.LoadSearchSet(Guid searchSetId, OrderGroupCollection ogc) +388
Microsoft.CommerceServer。 Runtime.Orders.POLoader.Load(String storedProcName, ListDictionary sqlParameters) +458
Microsoft.CommerceServer.Runtime.Orders.OrderContext.GetPurchaseOrdersForUser(Guid userId) +352

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

干杯,约翰

4

2 回答 2

0

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

例如在这个节点

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

中的一个

<PropertyMap ... /> 

线可能是错的?

于 2013-03-22T18:58:34.360 回答
0

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

表节点

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

类节点

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

映射节点

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

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

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

在此处输入图像描述

于 2013-06-06T20:58:42.460 回答