我在 wix 中使用 C# 进行自定义操作,效果很好。自定义操作本质上只是根据传递给方法的参数运行 sql 脚本。
我正在运行的脚本之一用数据填充我的一个表,如果其中没有任何内容,并且看起来像这样:
IF (SELECT COUNT(*) FROM [dbo].[Table]) = 0
BEGIN
INSERT [dbo].[Table] ([ItemId], [Description]) VALUES (N'<<GUID>>', NULL)
INSERT [dbo].[Table] ([ItemId], [Description]) VALUES (N'<<GUID>>', N'The 2nd Item')
...
END
在这种情况下<<GUID>>
,类似于e00104e4-7e5f-4563-9356-30732d5ca57e
- 这些脚本是使用相应版本的 Management Studio 从 SQL Server 2008 R2 的数据导出生成的。
当我在 Management Studio 中运行此脚本时,它可以正常工作并且如预期的那样,如果那里没有任何数据,则所有数据都会被插入。但是,通过 C# 代码运行它,我得到以下异常:
Conversion failed when converting from a character string to uniqueidentifier
作为表中唯一uniqueidentifier
的列,这必须是 ItemId 列,但我无法弄清楚为什么会发生这种情况,或者如何解决问题,最后一小时在线搜索也没有给出任何结果。
编辑
我应该补充一点,这些 SQL 查询位于一个文件中,然后 C# 代码将其内容作为 SQL 查询读取。如果可以的话,我真的不想修改它们,因为它增加了一个不需要的额外步骤。