آموزش Entity Framework

دسته بندی: دسترسی به داده

آموزش انتیتی فریمورک

آنچه در این صفحه می خوانید:

معرفی Entity Framework

Entity Framework یک فریمورک نگاشت شی رابطه‌ای اوپن سورس با تکنولوژی ORM برای ADO.NET است. شرکت مایکروسافت زیرمجموعه ای از ORM به نام انتیتی فریمورک را با هدف داشتن بعضی از قابلبت‌های برنامه‌نویسی شی‌گرا در استفاده از بانک های اطلاعاتی برای برنامه‌نویسان تولید کرد. در واقع انتیتی فریمورک تکنولوژی توسعه یافته ADO.Net است.

The Entity Framework مجموعه ای از فناوری ها در ADO.NET است که از توسعه برنامه های نرم افزاری مبتنی بر داده پشتیبانی می کند. معماران و توسعه دهندگان برنامه های داده گرا معمولاً با نیاز به دستیابی به دو هدف بسیار متفاوت دست و پنجه نرم کرده اند. آنها باید موجودیت ها، روابط و منطق مشکلات تجاری را که حل می کنند، الگوبرداری کنند و همچنین باید با موتورهای داده استفاده شده برای ذخیره و بازیابی داده ها کار کنند. داده ها ممکن است دارای چندین سیستم ذخیره سازی باشد که هرکدام پروتکل های خاص خود را دارند. حتی برنامه هایی که با یک سیستم ذخیره سازی منفرد کار می کنند باید در برابر الزامات نوشتن کد برنامه کارآمد و پایدار، نیاز سیستم ذخیره را متعادل کنند.

Entity Framework به توسعه دهندگان این امکان را می دهد تا با استفاده از داده ها در قالب اشیاء و خواص خاص دامنه مانند مشتریان و آدرس های کلاینت، بدون نیاز به نگرانی خود از جداول و ستون های پایگاه داده اصلی که این داده ها در آن قرار دارند، نگران باشند. با Entity Framework، توسعه دهندگان می توانند هنگام برخورد با داده ها در سطح بالایی از انتزاع کار کنند و می توانند برنامه های داده گرا را با کد کمتری نسبت به برنامه های سنتی ایجاد و حفظ کنند.

چرا از ORM استفاده می کنیم؟

بیشتر فریمورک های توسعه شامل کتابخانه هایی هستند که دسترسی به داده ها از پایگاه داده های رابطه را از طریق ساختار داده های مانند ضبط می کنند. نمونه کد زیر یک سناریوی معمولی را نشان می دهد که داده ها از یک پایگاه داده بازیابی می شوند و در یک DataTable ADO.NET ذخیره می شوند تا در دسترس با کد برنامه باشد:

    using(var conn = new SqlConnection(connectionString))
    using(var cmd = new SqlCommand("select * from Products", conn))
    {
        var dt = new DataTable();
        using(var da = new SqlDataAdapter(cmd))
        {
            da.Fill(dt);
        }
    }

داده های موجود در DataTable از طریق فهرست سازهای عددی یا رشته ای قابل دسترسی است و باید از شی به نوع صحیح تبدیل شود:

    foreach(DataRow row in dt.Rows)
    {
        int productId = Convert.ToInt32(row[0]);
        string productName = row["ProductName"].ToString();
    }

این رویکرد دیرهنگام یا "ضعیف" برای دسترسی به داده ها مستعد خطا است. معمولاً مشکلاتی در اشتباه بودن نام ستون یا یافتن اینکه نام ستون در دیتابیس تغییر یافته است، یا از تغییر در ترتیب ترتیب فیلدهای موجود در بیانیه SQL ناشی می شود، بدون اینکه تغییری در آن ایجاد شود. کد برنامه به همان اندازه، تبدیل نوع داده ممکن است با شکست مواجه شود. کد هنوز کامپایل می شود، اما در ران تایم خطا خواهد کرد. در نتیجه، توسعه دهندگان حرفه ای ترجیح می دهند با داده هایی به شکلی کاملاً تایپ شده کار کنند.

ویژگی های Entity Framework

یک سیستم ORM سبک و قابل توسعه

مایکروسافت در حال حاضر طراحی مجدد معماری اصلی فریمورک دات نت را از ابتدا طراحی کرده است. توسعه دهندگان هم اکنون می توانند از NET Core. به عنوان یک پلتفرم اوپن سورس و متقابل برای توسعه انواع برنامه ها استفاده کنند. از این رو، توسعه دهندگان می توانند با توجه به نیازهای دقیق هر پروژه، اجزای خاصی را به سیستم ORM اضافه یا حذف کنند.

پشتیبانی از سیستم عامل های جدید

علیرغم اینکه به عنوان یک سیستم ORM سبک وزن طراحی شده است، Entity Framework برای توسعه دهندگان NET. برنامه های مختلفی را با پشتیبانی از چندین سیستم عامل جدید ایجاد می کند.

پشتیبانی از چندین فضای ذخیره داده جدید

علاوه بر پشتیبانی از چندین سیستم عامل جدید، Entity Framework از منابع داده رابطه ای و غیر مرتبط نیز پشتیبانی می کند. این پشتیبانی توسعه دهندگان را قادر می سازد تا با برخی از سیستم های مدیریت پایگاه داده ارتباطی (RDBMS) و پایگاه داده های NoSQL که به طور گسترده استفاده می شوند، کار کنند. توسعه دهندگان می توانند حتی با استفاده از پایگاه داده های گسترده مانند SQL Server ،SQL Server Compact ،SQLite ،PostgreSQL ،Azure Table Storage و IBM Data Server، از نسخه 7 Entity Framework استفاده کنند.

تولید کوئری SQL را بهینه می کند

علاوه بر پشتیبانی از منابع داده جدید ارتباطی و غیر مرتبط، Entity Framework دارای ویژگی هایی برای بهینه سازی نسل پرس و جو SQL است. طراحی مجدد سیستم ORM همراه با ماژول تولید SQL است که بر اساس نیازها و درخواست های کاربران طراحی شده است. این ماژول توسعه دهندگان Dot Net را قادر می سازد با هدف قرار دادن چندین پایگاه داده، یک عبارت SQL SELECT ایجاد کنند. به همین ترتیب، توسعه دهندگان همچنین از ماژول استفاده می کنند تا SQL را بدون پرس و جوهای تو در تو ایجاد کنند.

ویژگی های داخلی لاگین

Entity Framework دارای یک ویژگی ورود به سیستم است که می تواند از طریق رابط ILoggerProvider پیاده سازی شود. توسعه دهندگان می توانند از ویژگی ورود به سیستم در سیستم عامل ها استفاده کنند. ویژگی ورود به سیستم با تجزیه و تحلیل اشکالات، دلایل اصلی و مشکلات عملکردی مبتنی بر مکان های مختلف، توسعه دهندگان را آسانتر می کند.

تسهیل تست واحد

Entity Framework اجرای برنامه های ایجاد، خواندن، به روزرسانی و حذف (CRUD) را با پشتیبانی از منابع داده غیر مرتبط و پایگاه داده های NoSQL آسان می کند. در عین حال، انجام پشتیبانی واحد را با پشتیبانی از جداول درون حافظه، برای توسعه دهندگان آسانتر می کند. توسعه دهندگان می توانند از ارائه دهنده InMemory استفاده کنند تا پایگاه داده های عمومی را برای اهداف آزمایش واحد ایجاد کنند. آن ها هنوز فاقد گزینه استفاده از ارائه دهنده برای تقلید از RDBMS واقعی هستند. اما ارائه دهنده برنامه نویسان را قادر می سازد تا اجزای آزمایش را یکپارچه به یک بانک اطلاعاتی عمومی اختصاص دهند.

  • امکان دسترسی آسان به داده ها
  • مدیریت راحت رابطه‌های یک به یک، یک به چند، و چند به چند بدون نیاز به Join های متعدد
  • دارای روابط ارث بری بین Entities
  • افزودن و حذف و آپدیت راحت تر داده ها
  • به حداقل رساندن پیچیدگی کد ها
  • سازگار با انواع سیستم های مدیریت دیتا
  • دارای پسوند های csdl ،ssdl و msl
  • دارای مدل های domail model ،logical model و physical model
  • یادگیری ساده تر از سایر ORM ها
  • پشتیبانی از LinQ
  • نصب اتوماتیک با Visual Studio
  • دارای کلید اصلی یا primary key
  • پشتیبانی از وراثت در کلاس ها
  • برای توسعه یافتن دارای سه روش database first ،model first ،code first
  • قابلیت انجام عملیات‌های CRUD

معماری Entity Framework

فریمورک Entity بیش از یک راه حل نقشه برداری رابطه شیء ، اساساً در مورد امکان دسترسی به برنامه ها برای دستیابی و تغییر داده هایی است که در مدل مفهومی به عنوان موجودات و روابط ارائه می شوند. فریمورک Entity از اطلاعات موجود در مدل و پرونده های نقشه برداری برای ترجمه نمایش داده های شی در برابر انواع موجود در مدل مفهومی به نمایش داده های منبع خاص داده استفاده می کند. نتایج پرس و جو به اشیاء که فریمورک Entity مدیریت می شود ، تحقق می یابد. Entity Framework روشهای زیر را برای جستجوی مدل مفهومی و بازگشت اشیاء ارائه می دهد:

LINQ به اشخاص. پشتیبانی از جستجوی یکپارچه زبان (LINQ) را برای انواع جستجوی موجودی که در یک مدل مفهومی تعریف شده اند ، فراهم می کند. برای اطلاعات بیشتر ، به LINQ به اشخاص مراجعه کنید.

SQL Entity یک گویش مستقل از SQL که به طور مستقیم با اشخاص در مدل مفهومی کار می کند و از مفاهیم Model Data Entity پشتیبانی می کند. Entity SQL هم با نمایش داده های شی و هم از نمایش داده ها استفاده می شود که با استفاده از ارائه دهنده EntityClient اجرا می شوند. برای اطلاعات بیشتر ، به بررسی اجمالی Entity SQL مراجعه کنید.

فریمورک Entity شامل ارائه دهنده داده های EntityClient است. این ارائه دهنده ارتباطات را مدیریت می کند ، نمایش داده شدگان موجود را به نمایش داده های منبع خاص داده تبدیل می کند و خواننده داده ای را که فریمورکیت Entity برای تحقق داده های موجودیت به اشیاء استفاده می کند ، برمی گرداند. در صورت نیاز به تحقق شیء ، ارائه دهنده EntityClient همچنین می تواند مانند ارائه دهنده داده های استاندارد ADO.NET با فعال کردن برنامه ها برای اجرای نمایش داده های مربوط به Entity SQL و استفاده از خواننده داده برگشت پذیر فقط استفاده شود. برای اطلاعات بیشتر ، به ارائه دهنده EntityClient برای فریمورک Entity مراجعه کنید.

نمودار زیر معماری Entity Framework را برای دسترسی به داده ها نشان می دهد:

معماری انتیتی فریمورک

ابزارهای مدل داده Entity می توانند یک کلاس مشتق از System.Data.Objects.ObjectContext یا System.Data.Entity.DbContext تولید کنند که نمایانگر ظرفیت موجودیت در مدل مفهومی است. این متن شیء امکان ردیابی تغییرات و مدیریت هویت، همزمانی و روابط را فراهم می کند. این کلاس همچنین یک روش SaveChanges را در معرض نمایش قرار می دهد که درج ها، به روزرسانی ها و حذف ها را به منبع داده می نویسد. مانند نمایش داده شده، این تغییرات یا با دستوراتی که به طور خودکار توسط سیستم تولید می شوند یا با روش های ذخیره شده که توسط توسعه دهنده مشخص شده اند، انجام می شود.

آیا این نوشته را دوست داشتید؟