1

我们有一种情况,源系统(性别)中的值需要映射到目标系统中的不同值。

示例值列表

  • 资源
    • F
  • 目的地
    • 男性
    • 女性

这是一个非常有用的功能,结合我们决定为所有列表值实现的数据库利用率。当我们尝试将其用于具有多个源值到单个目标值的值列表时,就会出现我们的问题。

示例复杂值列表

  • 资源
    • 收养母亲
    • 收养父亲
    • 法定监护人
    • 后妈
    • 继父
  • 目的地
    • 养母
    • 养母
    • 其他

具有唯一键约束的系统错误阻止我们将合法监护人/继母和继父映射到目标消息中的“其他”。我发现的所有示例都指的是简单的值列表,似乎并不指的是上面提到的复杂值示例。有谁知道这是否可以通过交叉引用来实现,或者我们必须为此创建一些自定义代码。

4

1 回答 1

1

使用值交叉引用(它是多对一映射)而不是 ID 交叉引用(它是一对一映射)。由于值交叉引用使用缓存,您还可以获得性能优势。

请参阅下面引用的 Value 和 Id 交叉引用之间的差异(带有小的拼写更正)。

我花了一些时间来了解“id”和“value”交叉引用之间的区别,并且能够得到以下我认为值得分享的要点。

在高层次上,这两个概念看起来很相似。但它们的运作方式几乎没有什么不同。

价值交叉参考

  1. 我不能在运行时修改这些。

  2. 这发生在应用类型之间。

  3. 这种交叉引用通常在枚举字段之间进行。

  4. 这使用缓存机制。数据库发生任何变化后,我们必须重新启动相应的主机实例才能看到变化。

  5. 这是一个多对一的映射。

  6. 仅在一个方向上保证映射。

  7. 当您想将它们用于映射到多个输入的值的反向映射时,将获取存储在外部参照表中的第一个值。

  8. 允许以下映射。所以在这种情况下,反向映射可能不会给出预期的输出。

    苹果——水果

    香蕉——水果

    西柚

  9. 我们必须在地图中使用 GetCommonValue 和 GetApplicationValue functoids

Id 交叉引用

  1. 这些可以在运行时设置。Set Common ID functoid 用于此。

  2. 这发生在 appinstance 类型之间。

  3. 这种交叉引用通常在实体唯一标识符之间。

  4. 在此,我们将为每个调用访问数据库。

  5. 这是一对一的映射。

  6. 映射在两个方向上都有保证。

  7. 反向映射始终与初始映射同步。

  8. 上述映射是不允许的,并且受到 Id 交叉引用表的约束。

    苹果——水果

    香蕉——水果

    西柚

  9. 我们必须在地图中使用 GetCommonId 和 GetApplicationId functoids

于 2014-03-31T23:34:42.590 回答