C# 失败,因为使用任务时返回值的T-SQL和CLR类型不匹配<;字符串>;
使用C# 失败,因为使用任务时返回值的T-SQL和CLR类型不匹配<;字符串>;,c#,tsql,C#,Tsql,使用任务作为返回类型时出错。当使用string作为返回类型进行测试时,它会工作 只返回string的函数起作用,但返回Task的函数不起作用 有什么解决办法吗 c#代码 你能发布成功的代码和失败的代码吗?谢谢发布您的代码,还有错误消息。您没有发布任何信息,因此无法猜测代码中的错误是什么。唯一可以确定的是,代码中有一个bug——您使用的是一种类型,而您应该使用另一种类型。也许您忘记了等待调用ExecuteScalarAsync或类似的东西?使用Task作为返回类型不会让方法在后台通过魔法运行。但如
任务
作为返回类型时出错。当使用string
作为返回类型进行测试时,它会工作
只返回string
的函数起作用,但返回Task
的函数不起作用
有什么解决办法吗
c#代码
你能发布成功的代码和失败的代码吗?谢谢发布您的代码,还有错误消息。您没有发布任何信息,因此无法猜测代码中的错误是什么。唯一可以确定的是,代码中有一个bug——您使用的是一种类型,而您应该使用另一种类型。也许您忘记了等待调用
ExecuteScalarAsync
或类似的东西?使用Task
作为返回类型不会让方法在后台通过魔法运行。但如果尝试返回string
,则会导致类型不匹配编译错误。添加async
关键字将隐藏错误,但仍同步运行。没有代码,人们只能猜测问题是什么以及如何解决它-如果不希望异步执行,请将任务替换为字符串。如果您确实需要,请在签名中使用异步任务
,并等待cmd.ExecuteScalarAsync
执行查询并获得结果。您好,我已经测试过该函数在c#下工作。问题是从SQL调用它时。我添加了代码
public async static Task<string> LagreFil(string filNavn, string
filePath, string url) {
var fileService = new FileService();
return await fileService.LagreFilAsync(filNavn, filePath, url);
}
public static string LagreFilTest() {
return "suksess";
}
CREATE ASSEMBLY CL2
FROM
'C:\xxx.dll'
WITH PERMISSION_SET unSAFE
GO
alter FUNCTION fnTEST2() RETURNS nvarchar(max)
EXTERNAL NAME CL2.[Tools.Files.library.Api.AttachmentsService].LagreFilTest;
select qq = dbo.fnTEST2()