.NET Dapper 범위

c# dapper orm

문제

최근에 내 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 '가 없습니다 (using 지시문이 없거나 어셈블리 참조?)

모두를 반환하는 방법은 다음과 같습니다.

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;
        }
    }

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; } 
}

수락 된 답변

이 오류는 속성 또는 확장 메서드로 존재하지 않는 List<User> 개체의 Permissions 개체에 액세스하려고하기 때문에 발생합니다.

첫 번째 예에서 변수 userUser 유형이고 SingleOrDefault() 메서드를 사용하여 단일 User 객체를 반환합니다.

...
var user = multipleResults.Read<User>().SingleOrDefault();

var permissions= multipleResults.Read<Permissions>().ToList();
if (user != null&& permissions != null)
{
  user.Permissions.AddRange(permissions);
}

return user; // --> user type is User
...

두 번째 예제에서 변수 userList<User> 유형이고 ToList() 메서드를 사용하여 User 객체 List<User> ( List<User> )을 반환합니다.

...
var user = multipleResults.Read<User>().ToList();
var permissions = multipleResults.Read<Permissions>().ToList();

if (user != null && permissions != null)
{
  user.Permissions.AddRange(permissions);
}

return user; // --> user type is List<User>
...


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow