【发布时间】:2026-01-27 18:35:02
【问题描述】:
我有一个这样的存储过程
ALTER PROCEDURE dbo.sp_CheckGlobalizationResourceValue
(
@ResourceObject NVARCHAR(255),
@ResourceName NVARCHAR(128)
)
AS
select count(*) from vpglobalizationresources
where ResourceObject = @ResourceObject and
ResourceName like '%' + @ResourceName + '%'
我正在使用 Linq to SQL 类。我从 .cs 文件发送 ResourceObject 和 ResourceName,如上所示。它的 returnValue 总是 0 为什么?存储过程或cs类有问题吗?我在数据库中运行了这个查询,它在那里运行良好。
public static bool CheckGlobalizationResourceValue(string resourceObject, string resourceName)
{
try
{
using (var dataContext = new ResourceDBDataContext())
{
resourceObject = resourceObject.Replace(ConfigurationHelper.MainDirectory + "\\", "");
resourceObject = resourceObject.Replace("\\", "/");
//resourceName = string.Format("'%{0}%'", resourceName);
var result = dataContext.sp_CheckGlobalizationResourceValue(resourceObject, resourceName);
if ((int)result.ReturnValue == 0)
{
return false;
}
else
{
return true;
}
//return (int)result.ReturnValue != 0;
}
}
catch (Exception exception)
{
throw new Exception("An error occured when retrieving data from database");
}
}
【问题讨论】:
-
而且我还从我的 .dbml 文件中删除了存储过程,并在更改后再次添加。
-
给我表格的数据和结构以便更好地理解......
-
这很难说,因为我不知道
dataContext.sp_CheckGlobalizationResourceValue在做什么,而且我对 LINQ 也不是很熟悉,但基于你使用result.ReturnValue的事实,我希望你是引用存储过程返回的内容而不是其结果。默认情况下,存储过程的返回值为 0,除非您使用RETURN 1;之类的内容覆盖它。 -
我在存储过程中通过这个查询修复了它! IF EXISTS(select * from vpglobalizationresources where ResourceObject = @ResourceObject and ResourceName like '%' + @ResourceName + '%') return 1 else return 0
标签: c# mysql sql .net linq-to-sql