כיצד להשתמש ב- Dapper ORM ב- C #

מיפוי יחסי אובייקט (ORM) נמצא בשימוש זמן רב בכדי למנוע את אי ההתאמה של העכבה הקיימת בין מודלי האובייקט של שפות התכנות לבין מודלי הנתונים במאגרי היחס. Dapper הוא מקור פתוח וקל משקל ORM שפותח על ידי צוות Stack Overflow. Dapper מהיר מאוד בהשוואה ל- ORM אחרים בעיקר בגלל משקלו הקל.

Dapper נבנה עם ביצועים ונוחות שימוש בחשבון. הוא מספק תמיכה בכריכה עצמית סטטית ודינמית באמצעות עסקאות, פרוצדורות מאוחסנות או הוספות נתונים בכמות גדולה.

התקן את Dapper ORM ב- Visual Studio

כדי להתחיל להשתמש ב- Dapper, בצע את הצעדים הבאים:

  1. פתח את Visual Studio 
  2. לחץ על קובץ -> חדש -> פרויקט
  3. בחר "אינטרנט -> יישום אינטרנט ASP.Net" מתיבת הדו-שיח "פרויקט חדש"
  4. ציין שם לפרויקט האינטרנט
  5. בחר בתבנית הפרויקט הריקה עבור ASP.Net
  6. לחץ על אישור כדי לשמור את הפרויקט

זה יוצר פרויקט ריק ליישום אינטרנט של ASP.Net.

אם התקנת את NuGet, תוכל להתקין את Dapper באמצעות NuGet - פשוט בחר את הפרויקט בחלון סייר הפתרונות, לחץ לחיצה ימנית על "נהל חבילות 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()שיטת ההארכה ב דאפר מאפשר לכם לאחזר נתונים מתוך מסד נתונים ולאכלס במודל האובייקט שלך. השיטה הבאה מאחזרת את כל הרשומות מטבלת המחבר, שומרת אותם בזיכרון ומחזירה את האוסף.

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()השיטה מחזירה את מספר השורות שהושפעו, כלומר מספר הרשומות שעודכנו. בדוגמה זו, רק רשומה אחת עודכנה ומכאן שהשיטה תחזיר הצלחה אחת.

נהלים מאוחסנים באמצעות 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 שלך, אך מקל על מיפוי תוצאות השאילתות ל- POCOs שלך (אובייקטים ישנים של CLR). החשוב מכל, אתה מקבל מהירות ביצוע מהירה הרבה יותר ממה שאתה עושה עם Entity Framework - כמעט זהה ל- ADO.Net, למעשה. 

-

עשו יותר עם C #:

  • כיצד לעבוד עם AutoMapper ב- C #
  • מתי להשתמש בכיתה מופשטת לעומת ממשק ב- C #
  • כיצד לעבוד עם אשכולות ב- C #
  • כיצד להשתמש ב- Dapper ORM ב- C #
  • כיצד ליישם את דפוס עיצוב המאגר ב- C #
  • כיצד ליישם לוגר פשוט ב- C #
  • כיצד לעבוד עם נציגים ב- C #
  • כיצד לעבוד עם נציגי Action, Func ו- Predicate ב- C #
  • כיצד לעבוד עם log4net ב- C #
  • כיצד לעבוד עם השתקפות ב- C #