мой класс:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public List<Address> Addresses { get; set; }
public BankAccount Account { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
public string Zipcode { get; set; }
}
public class BankAccount
{
public decimal Balance {get; set;}
public DateTime LastDateWithdrawn { get; set;}
}
его невозможно с помощью мультимаблинга или нескольких результатов, которые я уже пробовал. Как вы это делаете в dapper? я хочу добиться того, чтобы не делать обратные вызовы в базу данных, получая адреса и банковскую учетную запись, если бы я мог использовать множественное сопоставление или множественный результат или любые другие варианты.
Прочитав свой комментарий, я попытался дать вам ответ.
Скажем, здесь у вас есть один СП.
Create PROCEDURE [dbo].[GetPersonDetail]
(
@PersonId int
)
AS
SET NOCOUNT ON
BEGIN
-- 1). Get Person detail
Select * from PersonMaster Where PersonId = @PersonId
-- 2). Get Person Addrss
Select * from PersonAddress Where PersonId = @PersonId
-- 1). Get Person BankAccount
Select * from BankAccount Where PersonId = @PersonId
End
и вот ваш метод dapper, который использует QueryMultiple метод Dapper.
public Person GetPersonDetail(int PersonId)
{
try
{
var oPara = new DynamicParameters();
oPara.Add("@PersonId", PersonId, dbType: DbType.Int);
var person = new Person();
using (var multiResults = _connection.QueryMultiple(GetPersonDetail, oPara, commandType: CommandType.StoredProcedure))
{
person.Person = multiResults.Read<Person>().FirstOrDefault();
person.Addresses = multiResults.Read<Address>();
person.BankAccount = multiResults.Read<BankAccount>().FirstOrDefault();
}
return person;
}
catch (Exception ex)
{
thow;
}
}
Надеюсь, это может вам помочь... Всего наилучшего.