【发布时间】:2014-01-13 14:19:46
【问题描述】:
我最近一直在为我的 API 运行 Dapper 扩展库。以下代码根据单个用户 ID 返回用户列表及其相应地址:
public User GetUserBicProfiles(string userId)
{
using (
var multipleResults = this.db.QueryMultiple("sp_UserPermisisons", new {userId =
userId},commandType: CommandType.StoredProcedure))
{
var user = multipleResults.Read<User>().SingleOrDefault();
var permissions= multipleResults.Read<Permissions>().ToList();
if (user != null&& permissions != null)
{
user.Permissions.AddRange(permissions);
}
return user;
}
}
这很好用,但是当我尝试使用相同的详细信息集,但没有 userId 作为参数(应该返回具有各自权限的所有用户)时,我收到与添加范围有关的错误。
System.Collections.Generic.List' 不包含“UserPermissions”的定义,并且找不到接受“System.Collections.Generic.List”类型的第一个参数的扩展方法“UserPermissions”(您是否缺少使用指令还是程序集引用?)
全部返回的方法是:
public List<User> GetUsers()
{
using (var multipleResults = this.db.QueryMultiple("sp_UserPermissions",commandType: CommandType.StoredProcedure))
{
var user = multipleResults.Read<User>().ToList();
var permissions = multipleResults.Read<Permissions>().ToList();
if (user != null && permissions != null)
{
user.Permissions.AddRange(permissions);
}
return user;
}
}
用户类是:
public class User
{
public User()
{
this.Permissions = new List<Permissions>();
}
public string UserId { get; set; }
public string UserName { get; set; }
public string ApplicationName { get; set; }
public string Email { get; set; }
public string Comment { get; set; }
public string Password { get; set; }
public string PasswordQuestion { get; set; }
public string PasswordAnswer { get; set; }
public bool? IsApproved { get; set; }
public DateTime LastActivityDate { get; set; }
public DateTime LastLoginDate { get; set; }
public DateTime LastPasswordChangeDate { get; set; }
public DateTime CreationDate { get; set; }
public bool? IsOnline { get; set; }
public bool? IsLockedOut { get; set; }
public DateTime LastLockedOutDate { get; set; }
public bool? FailedPasswordAttempCount { get; set; }
public DateTime FailedPasswordAttemptWithStart { get; set; }
public bool? FailedPasswordAnswerAttemptCount { get; set; }
public DateTime FailedPasswordAnsdwerAttemptWindowStart { get; set; }
public List<Permissions> Permissions { get; set; }
}
【问题讨论】:
-
如果没有传入userId,你确定存储过程会返回吗?
-
没有名为
UserPermissions的类成员,如何存在名为Permissions的类mbr -
更正UserPermissions,应该是Permissions。
-
克里斯,如果我注释掉它试图添加范围的行并进行调试,我会看到从 SQL 返回的权限列表 - 在 SQL 中执行存储的过程,无论是否有参数都有效