Как включить объект, который имеет общее свойство списка и свойство ссылочного типа в dapper?

1

мой класс:

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? я хочу добиться того, чтобы не делать обратные вызовы в базу данных, получая адреса и банковскую учетную запись, если бы я мог использовать множественное сопоставление или множественный результат или любые другие варианты.

  • 0
    Глядя на ваш класс, трудно вам помочь. Покажите нам, что вы сделали до сих пор. Чего именно вы хотите добиться ??
  • 0
    @KrishnrajRana Я отредактировал свой вопрос .. спасибо!
Показать ещё 7 комментариев
Теги:
dapper
dapper-extensions

1 ответ

2
Лучший ответ

Прочитав свой комментарий, я попытался дать вам ответ.

Скажем, здесь у вас есть один СП.

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

Надеюсь, это может вам помочь... Всего наилучшего.

  • 0
    Спасибо .. Это будет работать!
  • 0
    @JohnPatrickPo: Рад, что это поможет вам, и спасибо, если вы можете принять это как ответ ... :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню