Как да използваме Dapper ORM в C #

Обектните релационни картографи (ORM) се използват отдавна за премахване на несъответствието на импеданса, което съществува между обектните модели на програмните езици и моделите на данни в релационни бази данни. Dapper е лек ORM с отворен код, разработен от екипа на Stack Overflow. Dapper е много бърз в сравнение с други ORM, главно поради лекото си тегло.

Dapper е създаден с мисъл за производителност и лекота на използване. Той осигурява поддръжка както за статично, така и за динамично свързване на обекти, използвайки транзакции, съхранени процедури или групови вмъквания на данни.

Инсталирайте Dapper ORM във Visual Studio

За да започнете да използвате Dapper, изпълнете следните стъпки:

  1. Отворете Visual Studio 
  2. Кликнете върху Файл -> Нов -> Проект
  3. Изберете „Web -> ASP.Net Web Application“ от диалоговия прозорец „New Project“
  4. Посочете име за уеб проекта
  5. Изберете празния шаблон на проект за ASP.Net
  6. Щракнете върху OK, за да запазите проекта

Това създава празен проект за уеб приложение на ASP.Net.

Ако имате инсталиран NuGet, можете да инсталирате Dapper с помощта на NuGet - просто изберете проекта в прозореца на Solution Explorer, щракнете с десния бутон върху „Управление на NuGet пакети ...“ и намерете Dapper. След това кликнете върху Инсталиране, за да започнете инсталирането на Dapper. След като Dapper е инсталиран успешно, можете да започнете.

CRUD в .Net с помощта на Dapper ORM

Нека сега напишем някакъв код, използвайки Dapper за извършване на CRUD операции срещу база данни. Помислете за база данни с име, която съдържа таблица, наречена Автор, със следните полета.

  • документ за самоличност
  • Първо име
  • Фамилия

Трябва да създадете клас на обект (клас POCO) за тази таблица на базата данни за простота при работа с Dapper. Ето класа на обекта на име Автор, който съответства на таблицата Автор в базата данни.

public class Author

    {

        public int Id { get; set; }

        public string FirstName { get; set; }

        public string LastName { get; set; }

    }

Методът на Query()разширение в Dapper ви позволява да извличате данни от базата данни и да попълвате данни във вашия обектен модел. Следващият метод извлича всички записи от таблицата Автор, съхранява ги в паметта и връща колекцията.

public List ReadAll()

{

         using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“AdventureWorks”].ConnectionString))

         {

            return db.Query

             (“Select * From Author”).ToList();

        }

    }

Обърнете внимание, че трябва да включите пространството от имена на Dapper във вашата програма, за да използвате рамката на Dapper.

Следващият метод илюстрира как можете да търсите определен запис от таблицата Автор.

public Author Find(int id)    

    {

        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))

        {

            return db.Query(“Select * From Author “ + 

            WHERE Id = @Id”, new { id }).SingleOrDefault();

        }

    }

В Execute()метода на рамката Dapper може да се използва за вмъкване, обновяване или изтриване на данни в база данни. Този метод връща целочислена стойност, която предполага броя на редовете, засегнати при изпълнението на заявката.

Следващият метод илюстрира как можете да актуализирате запис, използвайки рамката Dapper.

public int Update(Author author)

    {

        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))

        {

            string sqlQuery +

            “ LastName = @LastName “ + “WHERE Id = @Id”;

            int rowsAffected = db.Execute(sqlQuery, author);

            return rowsAffected;

        }

    }

Както можете да видите в горния кодов фрагмент, Update()методът връща броя на редовете, които са били засегнати, което означава броя на записите, които са били актуализирани. В този пример е актуализиран само един запис и следователно методът ще върне 1 при успех.

Съхранени процедури, използващи Dapper ORM

За да работите със съхранени процедури, използвайки Dapper, трябва да споменавате изрично типа команда, когато извиквате методите Queryили Execute. Ето пример, който показва как можете да използвате съхранени процедури с Dapper.

 public List Read()

    {

        using (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))

        {

            string readSp;

            return db.Query(readSp, commandType: CommandType.StoredProcedure).ToList();

        }

    }

Рамката Dapper също поддържа транзакции, т.е. можете да използвате транзакционни операции, ако е необходимо. За да направите това, можете да се възползвате от BeginTransaction()и EndTransaction()методите, както обикновено правите, когато работите с транзакции в ADO.Net. След това ще трябва да напишете транзакционните си извлечения в извикванията BeginTransactionи на EndTransactionметода.

Dapper micro ORM е изключително лек и лесен за използване. Той не генерира вашия SQL за вас, но улеснява картографирането на резултатите от заявките към вашите POCO (обикновени стари CLR обекти). Най-хубавото е, че получавате много по-бърза скорост на изпълнение, отколкото с Entity Framework - всъщност почти същата като ADO.Net. 

-

Направете повече с C #:

  • Как да работя с AutoMapper в C #
  • Кога да се използва абстрактен клас срещу интерфейс в C #
  • Как да работя с нишки в C #
  • Как да използваме Dapper ORM в C #
  • Как да приложим шаблона за проектиране на хранилището в C #
  • Как да внедрите прост регистратор в C #
  • Как да работя с делегати в C #
  • Как да работя с Action, Func и Predicate делегати в C #
  • Как да работя с log4net в C #
  • Как да работя с отражение в C #