1
  • 我正在将一个包含 200 多条记录的文件导入到主表中。
  • BizTalk 包只为一个源提供服务,其他包为其他源提供服务
  • 我对所有 SQL CRUD 使用强类型存储过程
  • 文件内的所有记录均来自同一来源
  • 该文件不包含源名称或源 ID
  • 我想从包硬编码值中确定来源
  • Master 表包含来自多个来源的记录
  • 导入前:从源中删除主表中的现有记录
  • 与文件导入不同,删除语句只发生一次

    DELETE FROM Master WHERE SourceID = @SourceID

文件导入有效,但如何对删除源 ID 进行硬编码?

在此处输入图像描述

4

2 回答 2

1

如果我理解正确,您想在插入新记录之前删除 SourceID 的所有现有记录吗?

如果是这样,您需要有权访问编排的入站消息上的 SourceID 值。

为此,请使用属性提升

您可以这样做:

  1. 在接收端口上配​​置的管道组件内,以便在消息到达编排时该属性可用,或者,
  2. 在编排内部,这将要求您将 InsertCSV 消息的构造形状移动到删除构造形状上方,并在构造形状内提升属性。

在这些选项中,第一个可能是最好的选项,因为理想情况下应该在消息分解期间完成分配属性。

或者,您可以在 Expression 形状中使用xpath() 调用来使用 xpath 询问消息,并像这样检索值。这样您就可以避免考虑房地产促销。

然而,虽然实施起来更快,但这种方法并不是最佳实践,因为它使您的编排对消息模式的变化非常敏感。

于 2015-12-11T10:28:38.633 回答
1

在您的删除转换中(就在发送形状上方),您可以为传出消息设置 SourcID 属性。然后,您可以使用此 SourceID 填充消息上下文。然后可以在您的删除语句中使用此 sourceID。

于 2015-12-10T15:41:49.607 回答