Dapper Nested Object mapping

In the past years I have used ORM (Object Relational Mapping) tools, such as Entity Framework, a lot. But recently started to use Dapper in a daily basis. For simple queries it’s really easy to implement it and it’s really fast. After all, the implementation as same as plain ADO.Net implementation only more easy and flexible.

It’s a trivial task to retrieve nested objects with a single query when using Entity Framework. To perform the same task with Dapper is a little bit tricky but still not impossible.

Let’s think about having a 2 tables called Posts and Categories as follow;

List of Posts with Category name requires a n-1 relation between those tables. Nested objects within n-1 or 1-1 relations more easy to retrieve;

using (var conn = new SqlConnection(_connectionString))
{
    var query = @"SELECT P.Id
                        , P.Title
                        , P.Content
                        , C.Id
                        , C.Name
                    FROM Posts AS P
                    INNER JOIN Categories AS C on P.CategoryId = C.Id";

    var result = await conn.QueryAsync<Post, Category, Post>(query, (p, c) =>
    {
        p.Category = c;
        return p;
    });

    return result.AsList();
}

Let’s make it a little bit more challenging and assume that, we want to retrieve list of Categories with related Posts as nested collection. The relationship between tables 1-n which requires additional lookup dictionary. Otherwise it will resulted with duplication.

using (var conn = new SqlConnection(_connectionString))
{
    var query = @"SELECT C.Id
	                , C.Name
	                , P.Id
	                , P.Title
	                , P.Content
                FROM Categories AS C
                INNER JOIN Posts AS P on P.CategoryId = C.Id";

    var lookup = new Dictionary<int, Category>();

    var result = await conn.QueryAsync<Category, Post, Category>(query, (c, p) => 
    {
        if (!lookup.TryGetValue(c.Id, out Category category))
            lookup.Add(c.Id, category = c);

        if (category.Posts == null)
            category.Posts = new List<Post>();

        category.Posts.Add(p);

        return category;
    });

    return result.AsList();
}
This entry was posted in Dapper. Bookmark the permalink.

0 Responses to Dapper Nested Object mapping

  1. Your comment is awaiting moderation.

    Не обращая внимания на тот факт, что БК 1xbet имеет реальную лицензию и зарегистрирована на Кюрасао, Нидерландских Антильских островах, в РФ ее web-сайт систематически блокируется. Однако клиентов фирмы это теперь не должно волновать, поскольку руководство компании предприняло соответствующие операции в верном направлении, обеспечив своим клиентам возможность входа на сайт в любое время, даже при условии блокирования главного ресурса 1xbet. Причины блокирования ресурса В Российской федерации утвержден законопроект, ограничивающий или запрещающий деятельность букмекерских компаний, которые не исполняют последующие требования: Реальная регистрация на территории РФ, приобретение разрешения и уплата налогов в госбюджет. Вход в состав СРО. Потому, что букмекерская контора уже имеет международную лицензию, ее представители сочли притязания страны завышенными, за что подвергалась блокировке. За последние три года активности 1xbet на территории Российской Федерации по решению суда оказалось заблокировано больше 500 доменов. Однако все это не мешает фирме продолжать деятельность, а ее клиентам использовать все сегменты проекта, делать ставки и получать выигрыш. Как войти на блокированный ресурс Чтобы обойти блокировку, представители фирмы предоставляют своим посетителям доступ к рабочим зеркалам 1xbet. Зайти на работающую сборку сайта можно посредством ссылки 1xbet зеркало сегодня прямо сейчас. Это простой и удобный способ пользования БК. Во время применения зеркала хранятся абсолютно все индивидуальные данные, включая счета и аккаунт, вдобавок рабочее зеркало в точности копирует главный сайт. Он столь же высококачественно защищен и полностью не опасен для осуществления ставок, ввода и вывода средств. Зеркало блокированного главного ресурса – один из самых комфортных вариантов продолжения выполнения ставок без малейшего риска и затруднений.

  2. Your comment is awaiting moderation.

    Несмотря на то, что букмекерская контора 1xbet зеркало на сегодня имеет реальную лицензию и оформлена на Кюрасао, Нидерландских Антильских островах, в РФ ее ресурс систематически блокируется. Однако клиентов фирмы это сегодня не должно беспокоить, так как руководство компании предприняло надлежащие операции в правильном направлении, обеспечив собственным клиентам возможность прохода на портал когда угодно, пусть даже при условии блокирования официального сайта 1xbet. Причины блокирования вебсайта В Российской федерации утвержден законопроект, ограничивающий или запрещающий активность БК, какие не исполняют следующие требования: Официальная процедура регистрации в пределах РФ, приобретение разрешения и уплата налоговых платежей в бюджет. Вход в состав СРО. Так как контора букмекерская уже имеет транснациональную лицензию, ее представители сочли нормативы государства высокими, за это подверглась блокированию. В последнее время работы 1xbet на территории России по заключению судебного органа оказалось блокировано больше 500 доменов. Однако это не мешает компании возобновлять деятельность, а ее клиентам использовать все сегменты сайта, делать ставки и выигрывать деньги. Каким способом зайти на блокированный интернет-сайт С целью обойти блокировку, работники компании предлагают всем своим пользователям вход к рабочим зеркалам 1xbet. Войти на функционирующую сборку вебсайта возможно при помощи ссылки 1xbet зеркало. Это несложный и удобный способ пользования БК. При применении зеркала сохраняются абсолютно все личные данные, в том числе счета и аккаунт, к тому же зеркало в точности воспроизводит официальный интернет-сайт. Он столь же качественно предохранен и полностью не опасен для выполнения ставок, ввода и получения денежных средств. Рабочее зеркало заблокированного основного проекта – один из самых удобных методов продолжения организации игровых ставок без мизерного риска и хлопот.

  3. Your comment is awaiting moderation.

    Несмотря на тот факт, что БК 1xbet зеркало содержит официальную лицензию и оформлена на Кюрасао, Нидерландских Антильских островах, в РФ ее портал постоянно блокируется. Но абонентов фирмы это сегодня не должно волновать, так как руководство фирмы предприняло соответствующие шаги в верном направлении, гарантировав собственным клиентам реальность входа на сайт в любой момент, даже при обстоятельстве блокирования главного сайта 1xbet. Причины блокировки вебсайта В Российской федерации утвержден закон, ограничивающий или запрещающий активность букмекерских компаний, какие не выполняют последующие требования: Официальная процедура регистрации на территории Российской Федерации, приобретение разрешения и уплата налогов в бюджет. Вход в состав СРО. Потому, что букмекерская контора уже имеет международную лицензию, ее представители посчитали притязания страны завышенными, за что подвергалась блокированию. В последнее время работы 1xbet на территории России по заключению суда оказалось заблокировано больше 500 доменов. Однако все это не препятствует компании продолжать деятельность, а ее посетителям использовать все разделы вебсайта, делать ставки и иметь выигрыш. Каким способом войти на блокированный сайт Для того, чтобы обойти блокирование, представители фирмы предлагают своим абонентам доступ к рабочим зеркалам 1xbet. Войти на действующую версию ресурса можно с помощью гиперссылки 1xbet зеркало. Это простой и комфортный способ пользования БК. Во время применения зеркала хранятся все индивидуальные данные, включая счета и учетка, к тому же рабочее зеркало в точности повторяет главный интернет-сайт. Он настолько же качественно защищен и целиком безопасен для проведения игровых ставок, внесения и вывода средств. Рабочее зеркало блокированного главного веб-сайта – самый комфортный способ продолжения организации игровых ставок без мизерного риска и затруднений.

  4. Your comment is awaiting moderation.

    Несмотря на то, что БК 1xbet содержит официальную лицензию и зарегистрирована на Кюрасао, Нидерландских Антильских островах, в РФ ее интернет-сайт регулярно блокируется. Однако абонентов конторы это сегодня не может волновать, поскольку управление фирмы предприняло надлежащие операции в правильном направлении, обеспечив всем своим клиентам реальность прохода на сайт когда угодно, даже при обстоятельстве блокировки главного ресурса 1xbet. Причины блокировки вебсайта В Российской федерации утвержден закон, ограничивающий или запрещающий функционирование БК, которые не исполняют последующие требования: Реальная регистрация на территории РФ, получение разрешения и оплата налогов в бюджет. Вход в состав СРО. Потому как букмекерская контора уже имеет международную лицензию, ее представители сочли нормативы государства завышенными, за что подверглась блокированию. За последние 3 года функционирования 1xbet на территории России по решению судебного органа оказалось блокировано больше 500 доменов. Но это не препятствует компании продолжать работать, а ее посетителям использовать все разделы проекта, делать ставки и выигрывать деньги. Как зайти на заблокированный ресурс С целью обойти блокирование, работники компании предоставляют всем своим играющим вход к рабочим зеркалам 1xbet. Войти на работающую версию веб-сайта можно при помощи ссылки 1xbet зеркало рабочее прямо. Это простой и комфортный способ использования БК. При использовании рабочего зеркала хранятся все индивидуальные данные, включая счета и аккаунт, к тому же зеркало в точности воспроизводит официальный сайт. Он в такой же мере качественно защищен и полностью не опасен для проведения игровых ставок, ввода и вывода денежных средств. Зеркало заблокированного основного ресурса – один из самых комфортных вариантов продолжения выполнения игровых ставок без мизерного риска и хлопот.

Leave a Reply

Your email address will not be published. Required fields are marked *