【发布时间】:2021-07-06 05:45:23
【问题描述】:
我有一个表,其中列(SelectedIds)数据类型之一是uuid 数组,我正在使用 RAW sql 插入语句传递相同的 guid,如下所示
foreach(var designHubProjectSpaceType in designHubProjectSpaceTypes)
{
var warningJson = JsonConvert.SerializeObject(designHubProjectSpaceType.Warnings).Replace("'", "''", StringComparison.Ordinal);
var initialObjectJson = JsonConvert.SerializeObject(designHubProjectSpaceType.InitialObject).Replace("'", "''", StringComparison.Ordinal);
var patchJson = JsonConvert.SerializeObject(designHubProjectSpaceType.Patches).Replace("'", "''", StringComparison.Ordinal);
migrationBuilder.Sql($@"INSERT INTO ""DesignHubProjectSpaceTypes""(""Id"", ""ProjectNumber"", ""ExcludedIds"", ""SelectedIds"", ""IsBasedOnMaster"", ""Warnings"", ""InitialObject"", ""Patches"") "
+ $@"VALUES ('{designHubProjectSpaceType.Id}', '{designHubProjectSpaceType.ProjectNumber}', [], '{designHubProjectSpaceType.SelectedIds.Select(a => a).ToList()}', '{designHubProjectSpaceType.IsBasedOnMaster}',
'{warningJson}', '{initialObjectJson}', '{patchJson}' )");
}
这里designHubProjectSpaceType.SelectedIds.Select(a => a).ToList() 有guid 的列表,这就是我试图传递到SelectedIds 列的内容。但是当我试图查看传递的 sql 字符串时,我注意到代替那些 guid system.Collections.Generic.List[System.Guid] 被传递,如下图所示
这些是 designHubProjectSpaceType.SelectedIds 持有的 guid,我不知道我在哪里做错了。
任何人都可以让我知道为什么 guid 列表作为类型传递,我使用 postgreSQL 作为 DB 并使用 EFCore。我已经把上面的代码放到迁移文件里了。
下面是表结构
【问题讨论】:
-
嘿 - 你到底遇到了什么异常?
-
你可以插入数组的数据库是什么?
-
@PiotrŻak 得到像
syntax error at or near "["这样的异常,而不是 guid 列表system.Collections.Generic.List[System.Guid] -
@spzvtbg 数据库是 postgresql 并且列数据类型 id
uuid[]我更新了相同的问题 -
designHubProjectSpaceType.SelectedIds.Select(a => a).ToList().ToString() = System.Collections.Generic.List`1[...] 而不是 [ {xxx-xxx- xx-xx},{...},...]
标签: c# .net postgresql entity-framework-core npgsql