C# 如何修复此处的“指定强制转换无效”错误?
我试图使用insert语句上的输出并使用DataContext.ExecuteQuery或任何更合适的DataContext方法来获取SMALLINT的id 尝试:C# 如何修复此处的“指定强制转换无效”错误?,c#,asp.net,.net,sql-server,C#,Asp.net,.net,Sql Server,我试图使用insert语句上的输出并使用DataContext.ExecuteQuery或任何更合适的DataContext方法来获取SMALLINT的id 尝试: string query = $@" DELETE FROM MyTable WHERE [Name] = '{name}' INSERT INTO MyTable ([Name], ...) OUTPUT INS
string query = $@"
DELETE FROM MyTable WHERE [Name] = '{name}'
INSERT INTO MyTable ([Name], ...)
OUTPUT INSERTED.ID
VALUES ('{name}', ...)";
short id = (short)context.ExecuteQuery<int>(query).Single();
我尝试使用SCOPE\u IDENTITY,但发生了同样的事情。删除
插入的输出.ID
加
);选择范围\标识
最后,在引号内
ExecuteQuery要求在结果集中返回一个不同于输出变量的值。InvalidCastException来自尝试将null的结果集转换为int。删除
插入的输出.ID
加
);选择范围\标识
最后,在引号内
ExecuteQuery要求在结果集中返回一个不同于输出变量的值。InvalidCastException来自尝试将null的结果集转换为int。尝试:
short id = context.ExecuteQuery<short>(query).Single();
当希望SQL Server返回Int32并获取Int16时,代码中会发生强制转换异常。请尝试:
short id = context.ExecuteQuery<short>(query).Single();
当希望SQL Server返回Int32并获取Int16时,代码中会发生强制转换异常。查询有效吗?因为您使用@,所以查询字符串以新行开头。您可以通过在同一行上启动字符串来删除它:string query=$@DELETE FROM MyTable,其中[Name]='{Name}'..@Quantic不应该是重要的。Single将在空列表上失败-请尝试FirstOrDefault,看看是否有帮助。@Hogan我希望它在空列表上失败,那么您就成功了!这个查询有效吗?因为您使用@,所以查询字符串以新行开头。您可以通过在同一行上启动字符串来删除它:string query=$@DELETE FROM MyTable,其中[Name]='{Name}'..@Quantic不应该是重要的。Single将在空列表上失败-请尝试FirstOrDefault,看看是否有帮助。@Hogan我希望它在空列表上失败,那么您就成功了!