ایجاد Model از روی Database موجود در EF Core
در بسیاری اوقات ممکن است تیم تحلیل دیتابیس، از توسعه اپلیکیشن جدا شده باشد تا مراحل نرمال سازی و تست بهره وری اجرای کوئریها، بهصورت جداگانهای از توسعهی برنامه انجام شود؛ یا ممکن است دیتابیس یک برنامهی از پیش موجود، برای نگهداری و مهندسی مجدد به شما سپرده شود. سناریو هر چه باشد، جهت سرعت بخشیدن به توسعهی نرم افزار میتوان از Entity Framework Core جهت ایجاد فایلهای Model از روی دیتابیس موجود استفاده کرد.
در این مثال ، از دیتابیس SQL Server و یک برنامهی کنسول و همچنین از ابزار NET Core CLI. استفاده خواهیم کرد.
با استفاده از ابزار CLI ابتدا یک فولدر خالی به نام EfCoreDbToModel ایجاد میکنیم:
سپس وارد این فولدر شده:
و بعد از آن یک
پروژهی جدید کنسول را در این فولدر ایجاد مینماییم:
پس از مشاهده پیام Restore Succeeded، بستههای زیر را به پروژه اضافه میکنیم:
> dotnet add package Microsoft.EntityFrameworkCore.SqlServer
> dotnet add package Microsoft.EntityFrameworkCore.Tools
> dotnet add package Microsoft.EntityFrameworkCore.SqlServer.Design
بستهی اول SQL Server Provider مناسب برای Entity Framework Core هست. بستهی دوم مدیریت دستورات Entity Framework Core، از جمله دستورات Scaffold-DbContxet ، Add-Migration و Update-Database را بر عهده خواهد داشت. هر دو بستهی فوق جهت ارتباط EF Core با SQL Server ضروری هستند و در نهایت جهت دسترسی به امکانات ( Design-Time )
زمان طراحیِ EF Core در SQL Server از جمله Scaffold کردن Model، به بستهی سوم نیازمندیم.
در ادامه فایل csproj. را باز کرده و در صورتیکه خط زیر در آن موجود نیست، آن را به گره ItemGroup اضافه کنید:
< DotNetCliToolReference Include= " Microsoft.EntityFrameworkCore.Tools.DotNet " Version= " 2.0.0 " />
سپس بستهها را Restore نمایید:
اکنون با اجرای دستوری مثل دستور زیر، بررسی کنید که آیا دستورات Ef Core در دسترس هستند یا خیر:
در صورتیکه همه چیز مطابق انتظار کار کرده باشد، باید نتیجهای مشابه تصویر زیر نمایش داده شود:
برای تولید فایلهای Model، از دستور dbContext scaffold بصورت زیر استفاده میکنیم:
>dotnet ef dbcontext scaffold "Server=.;Database=Your_DB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model
دستور فوق دارای دو آرگومان اصلی است:
1- Connection String
2- Provider که Entity Framework Core Provider مخصوص دیتابیس مدنظر شماست.
لیستی از دیتابیسهای مورد پشتیبانی EF Core را میتوانید
در اینجا مشاهده کنید.
پس از اجرای دستور فوق، فولدر Model، شامل فایلهای Entity و همچنین یک فایل دیگر که معرف DbContext است، ایجاد خواهند شد:
گزینهی o- دایرکتوری ایجاد فایلهای مدل و DbContext را مشخص میکند. در صورتیکه از وارد کردن آن صرف نظر کنید، این فایلها بصورت پیش فرض در مسیری قرار خواهند گرفت که فایل csproj. وجود دارد.
همانطور که ملاحظه میکنید نام کلاس DbContext از ترکیب نام دیتابیس بعلاوهی کلمه “Context” خواهد بود. جهت تغییر نام این کلاس میتوانید از گزینهی "context "Your_Context_Title- استفاده نمائید. برای مثال:
> dotnet ef dbcontext scaffold "Server=.\;Database=Your_Db_name;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model -context "MyDbContext"
جهت کسب اطلاعات بیشتر رجوع کنید به
^ و
^.