C# 从C访问数据库存储过程
我正试图从数据库中的UserInfo表访问数据。我创建了一个存储过程,对该表执行select操作,并尝试从我的c应用程序执行该存储过程 目前,如果我在用户上运行get,即localhost:12345/user,我会得到一个500错误。它正在进入我的存储库层,但由于某种原因,当它点击using语句时失败。关于如何解决这个问题有什么想法吗 错误:500内部服务器错误 控制器 存储过程C# 从C访问数据库存储过程,c#,sql,asp.net,C#,Sql,Asp.net,我正试图从数据库中的UserInfo表访问数据。我创建了一个存储过程,对该表执行select操作,并尝试从我的c应用程序执行该存储过程 目前,如果我在用户上运行get,即localhost:12345/user,我会得到一个500错误。它正在进入我的存储库层,但由于某种原因,当它点击using语句时失败。关于如何解决这个问题有什么想法吗 错误:500内部服务器错误 控制器 存储过程 这是一个500内部服务器错误。。。当我调试应用程序时,它会在点击using语句后立即退出我的存储库层。当然,它是5
这是一个500内部服务器错误。。。当我调试应用程序时,它会在点击using语句后立即退出我的存储库层。当然,它是500。抛出的C异常是什么?_sqlQueryProvider是否已注入且不为null?ISqlQueryProvider是什么?@Igor,它表示对象引用未设置为对象的实例,该对象的类型为System.NullReferenceException
public class UserController : ApiController
{
private readonly IUserBusiness _userBusiness;
public UserController(IUserBusiness userBusines)
{
_userBusiness = userBusines;
}
[HttpGet]
[Route("user")]
public async Task<ApiResponse<Status, IEnumerable<UserInfo>>> ListUsers()
{
return await _userBusiness.ListUsers();
}
}
public class UserBusiness : IUserBusiness
{
public readonly IUserRepository _userRepository;
public UserBusiness(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public async Task<ApiResponse<Status, IEnumerable<UserInfo>>> ListUsers()
{
return new ApiResponse<Status, IEnumerable<UserInfo>>(Status.Success, await _userRepository.ListUsersInfo());
}
}
public class UserRepository : IUserRepository
{
private readonly ISqlQueryProvider _sqlQueryProvider;
public UserRepository(ISqlQueryProvider sqlQueryProvider)
{
_sqlQueryProvider = sqlQueryProvider;
}
public async Task<List<UserInfo>> ListUserInfo()
{
using (var reader = _sqlQueryProvider.Execute(RepositorySettings.DatabaseConnection, ListUserInfo_Proc, null))
{
return reader.Read<ListUserInfo>().ToList();
}
}
}
public class UserInfo
{
public int UserId {get; set;}
public string Username {get; set;}
// Properties continue...
}
Use DatabaseName;
Go
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE ListUserInfo_Proc
AS
BEGIN
SET NOCOUNT ON;
SELECT UserId, UserName -- the list continues
FROM User
END