.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オブジェクトにアクセスしようとしているためです。

最初の例では、変数userの型がUserで、 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
...

2番目の例では、変数userList<User>型ですが、 ToList()メソッドを使用して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
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ