Dapper Multiple Mapping разбивается на поле First в select - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть базовый класс, который содержит два подкласса, и у базового класса нет дополнительных свойств. Я хочу использовать кратковременное сопоставление данных для непосредственного сопоставления данных с подклассами. Но в разделенном свойстве он выдает и исключение, говорящее

"При использовании multi-mapping APIs убедитесь, что вы установили splitOn param, если у вас есть ключи, отличные от Id`` `

и я не могу разбить сам первый столбец.

public class User
{
public int UserId {get; set;}
public string UserName {get; set;}
}

public class Business
{
public int BusinessId {get; set;}
public string BusinessName {get; set;}
}

public class UserAndBusiness
{
public User UserDetails{get; set;}
public Business BusinessDetails{get; set;}
}


var userDetails = await dbConnection.QueryAsync<UserAndBusiness, 
User,Business,UserAndBusiness>(@"
                        select User_Id UserId,User_Name UserName,Business_Id BusinessId,
Business_Name BusinessName from Users u join Business b on u.User_Id=b.User_Id",
                        map:(ub,u,b)=>
                        {
                            ub.UserDetails=u;
                            ub.BusinessDetails=b;
                            return ub;
                        },
                        splitOn:"UserId,BusinessId"
                        );


Здесь я хочу разделить результат с самого начала, чтобы присвоить данные подклассам

1 Ответ

1 голос
/ 07 ноября 2019

Я удалил первый параметр, который содержит значение и объявлен как новый экземпляр внутри функции карты, и получил результат


var userDetails = await dbConnection.QueryAsync<
User,Business,UserAndBusiness>(@"
                        select User_Id UserId,User_Name UserName,Business_Id BusinessId,
                        Business_Name BusinessName from Users u join Business b on u.User_Id=b.User_Id",
                        map:(u,b)=>
                        {
                            UserAndBusiness ub = new UserAndBusiness();
                            ub.UserDetails=u;
                            ub.BusinessDetails=b;
                            return ub;
                        },
                        splitOn:"BusinessId"
                        );




Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...