在 CDS 连接器中使用备用密钥时出错

Error when using Alternate Key in CDS connector

我正在使用 Azure 数据工厂中的 应用程序通用数据服务 连接器将数据加载到 Dynamics 365

在使用实体密钥之前,我已经成功地做到了这一点。看到这个问题:

现在我正在尝试使用备用键将记录更新插入到 account 实体中。 (在这种情况下插入)

在动态中

我在 account 中创建了两个自定义属性字段:

Field name        Data Type    Field Type    Max Length
=======================================================
xyz_srcsystem     Single Line  Simple        50
xyz_srccode       Single Line  Simple        50

然后我在 account 上创建了一个密钥,其中包含以下字段:

xyz_alternatekeyaccount

在 ADF 中

然后我在 ADF 中使用 复制数据 activity 将数据从 SQL 视图复制到帐户实体中,使用 CDS 连接器作为目标。

这是我的来源 SQL 声明:

SELECT 
CAST(NULL as uniqueidentifier) as accountid,
'ADFTest1' as accountnumber, 'ADF Test 1' as [description],  
'nmcdermaid@xyz.com.au' as emailaddress1,
CAST('TST' AS NVARCHAR(50)) as xyz_srcsystem,
CAST('1' AS NVARCHAR(50)) as xyz_srccode

在目标中,在 备用键名 字段中我输入了备用键名:xyz_alternatekeyaccount

我在 运行 管道时得到的错误是

Invalid type for entity id value

一些排除边缘情况的测试:

又见这个 Doco GitHub 我提出:

https://github.com/MicrosoftDocs/azure-docs/issues/59028

当我将源 SQL 更改为此时,它起作用了:

SELECT 
'ADFTest1' as accountnumber, 'ADF Test 1' as [description],  
'nmcdermaid@xyz.com.au' as emailaddress1,
CAST('TST' AS NVARCHAR(50)) as xyz_srcsystem,
CAST('1' AS NVARCHAR(50)) as xyz_srccode

注意:区别在于我没有在源数据集中包含真正的主键。

并不是说如果您想 UPSERT 一条新记录 (INSERT) 并且这不是基于备用键,则您必须包含一个 NULL 主键