我们遇到的情况是,源系统(性别)中的值需要映射到目标系统中的不同值。
这是一个非常有用的功能,结合数据库利用率,我们决定为所有列表值实现此功能。当我们尝试将其用于具有多个源值到单个目标值的值列表时,就会出现问题。
具有唯一键约束的系统错误阻止我们将合法的Guardian / Step Mother和Step Father映射到目标消息中的“Other”。我发现的所有示例都引用了简单的值列表,似乎没有引用上面提到的复杂值示例。有谁知道这是否可以通过交叉引用实现,或者这是我们必须为其创建一些自定义代码的东西。
答案 0 :(得分:1)
使用值交叉引用(它是多对一映射)而不是ID交叉引用(它是一对一映射)。由于Value Cross Referencing使用缓存,您还可以获得性能优势。
请参阅下面引用的Difference between Value & Id Cross references(带有较小的拼写更正)。
我花了一些时间来了解“id”和“value”之间的区别 交叉引用,我能够得到以下几点我 想要分享。
在较高的层面上,这两个概念看起来很相似。但是他们 差别很小。
价值交叉参考
这些不能在运行时修改。
这种情况发生在应用类型之间。
此交叉引用通常在枚举字段之间。
这使用缓存机制。在数据库发生任何更改后,我们必须重新启动相应的主机实例以查看更改。
这是一个多对一的映射。
只能在一个方向保证映射。
如果要将它们用于映射到多个输入的值的反向映射,则存储在外部参照中的第一个值 提取表。
允许以下映射。所以在这种情况下,反向映射可能不会给出预期的输出。
Apple - Fruit
香蕉 - 水果
葡萄 - 水果
- 醇>
我们必须使用GetCommonValue&地图中的GetApplicationValue functoid
Id交叉引用
这些可以在运行时设置。 Set Common functoid用于此目的。
这种情况发生在appinstance类型之间。
此交叉引用通常介于实体唯一标识符之间。
在此,我们将为每次通话点击数据库。
这是一对一的映射。
两个方向都保证了映射。
反向映射始终与初始映射同步。
不允许上述映射,并且受Id交叉引用表的约束限制。
Apple - Fruit
香蕉 - 水果
葡萄 - 水果
- 醇>
我们必须使用GetCommonId&地图中的GetApplicationId functoid