روش Database First چیست؟ چگونه از روش Database – First در ASP.NET Core 2 استفاده کنیم ؟ چگونه عملیات درج ، آپدیت و ویرایش اطلاعات را در روش Database First انجام دهیم؟
سرفصلهای پست
آموزش روش DataBase First
در روش Database First ، یک دیتابیس آماده داریم و این دیتابیس به یکسری کلاس ها تبدیل می شود. به ازای هر جدول از دیتابیس یک کلاس ایجاد می شود و ستون های هر جدول Property های این Class را تشکیل می دهند.
ابتدا یک دیتابیس به نام StudentDB در نرم افزار SQL Server ایجاد می کنیم. این دیتابیس شامل سه جدول به نام های Student ، Course و Student_Course می باشد همانند تصویر زیر
حالا برای تبدیل دیتابیس StudentDB به کلاس های مدل ، دستور زیر را در پنجره ی Package Manager Console وارد نموده و دکمه Enter را بزنید تا این دستور اجرا شود.
Scaffold-DbContext "Server=(local);Database=StudentDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
در دستور بالا بعد از Scaffold-DbContext
، رشته اتصال یا Connection String رو تعریف کردیم و در انتهای دستور هم از output Models-
استفاده کردیم تا کلاس های مربوط به دیتابیس در پوشه Models ایجاد شوند.
بعد از اجرای دستور بالا کلاس های Student ، Course ، StudentCourse و StudentDBContext به پوشه Models اضافه می شوند.
آپدیت کردن کلاس های دیتابیس در روش Database – First
چنانچه در SQL Server ، تغییری در دیتابیس خود ایجاد کردید می توانید با وارد کردن دستور زیر در پنجره ی Package Manager Console کلاس های مربوط به دیتابیس خود را آپدیت کنید.
Scaffold-DbContext "Server=(local);Database=StudentDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
افزودن کدهای درج ، حذف ، ویرایش و نمایش اطلاعات به Controller
حالا یک کنترلر به پروژه اضافه کنید نوع کنترلر را MVC Controller With Views , using Entity Framework انتخاب کرده و روی Add کلیک کنید.
حالا در پنجره باز شده بر از قسمت Model Class نام کلاسی که می خواهید کدهای مربوط به عملیات درج ، حذف ، ویرایش و نمایش اطلاعات برای آن در Controller ایجاد شود را انتخاب کنید ، از قسمت Data context class نام کلاس Context را انتخاب نموده که نام کلاس context پروژه StudentDBContext هست و در قسمت Controller name هم می توانید نام کنترلر را تغییر دهید ، سپس بر روی دکمه Add کلیک کنید تا این کنترلر به همراه کدهای عملیات درج ، حذف ، ویرایش و نمایش اطلاعات برای شما ایجاد شود.
23 پاسخ
سلام خسته نباشید. من به روش db -first یک پروژه ساختم و حالا یکی از جداولم در دیتابیس را تغییر دادم و میخوام این تغییر توی models هم رخ بده ولی بقیه کلاس هایی که از قبل ساختم و تغییراتی روشون دادم تغییر نکنند باید چه دستوری بزنم که فقط همون یه کلاس تغییر کنه و بقیه کلاسها دست نخورده باقی بمونند. در ضمن دستور -force را هم زدم کل کلاسهام از نوع ساخته شد و همشون تغییر کردند که من این رو نمیخواستم. لطفا راهنماییم کنید. ممنونم
سلام. وقتتون بخیر. بخاطر آموزش خوب و کاربردیتون ممنونم.
میشه لطفا بفرمایید اگر از طریق این روش یه پایگاه داده موجود رو به پروژه مون اضافه کنیم و بعد بخوایم در ادامه کار از طریق روشهای کد فرست جدول به این مدل اضافه کنیم یا تغییراتی در مدل بدیم، امکانش هست؟ شما تو اموزش فرمودین اگر در sqlserver تغییری ایجاد شد میشه مدل رو هم آپدیت کنیم. برعکسش چطور؟ تغییرات مدل رو هم میشه به sql server انتقال بدیم؟ مثلا مثل روشهای مهاجرت؟
سلام وقتتون بخیر
خیر در روش Database First دیگه نمی تونید از Code First استفاده کنید پس همین ابتدای راه تضمبم خودتون رو بگیرید که کدوم روش براتون راحت تر هست
زمانی که شما مدل رو تغییر میدید باید خودتون دیتابیس رو هم دستی تغییر بدید و دیگه نمی تونید برای آپدیت از امکانات روش Code First استفاده کنید.
باسلام
من وقتی از Scaffold-DbContext “Server=(local);Database=StudentDB;Trusted_Connection=True;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models استفاده می کنم با خطای زیر مواجه می شوم . در صورت امکان راهنمایی بفرمائید.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)
سلام وقتتون بخیر
اول مطمپن بشید که دیتابیس شما ساخته شده در SQL SERVER
احتمالا MSSQL شما Stop شده و شما باید از طریق مسیر زیر Run اش کنید
(ComputerManagement -> Services And Applications -> Sql Server Configuration Manager -> Sql Server Services -> Sql Server (MSSQL SERVER
روی MSSQL SERVER راست کلیک کنید و بعدش Run رو انتخاب کنید.
سلام من طبق گفته های شما پروژه خودمو ساختم
اما وقتی پروژه رو اجرا میکنم خطای زیر را به من نشون میده:
AggregateException: Some services are not able to be constructed (Error while validating the service descriptor
سلام وقتتون بخیر
خطای ایجاد شده به خاطر تزریق وابستگی هست شما یک سرویس دارید و باید در کلاس Startup.cs تزریق وابستگی برای این سرویس رو پیکربندی کنید با استفاده از متدهای AddTransient و …
سلام ببخشید من میخوام به روش database first در asp.net core 3 به دیتا بیس وصل بشم ولی نمیدونم connection string رو چطور بنویسم اگه میشه راهنمایی کنید
ممنون
سلام وقتتون بخیر
شما باید در فایل appSettings.json یک Connection String تعریف کنید. به صورت زیر
سلام
ممنون از آموزش های عالی شما می خواستم بدونم اگر کلاس ها را با استفاده از dtabaseFirst ساختیم و حالا پشیمون شدیم و بخواهیم از یک پایگاه داده دیگه استفاده کنیم چگونه با دستوری همه را حذف کنیم؟
سلام وقتتون بخیر ، خواهش میکنم ، خوش حالم مورد رضایت شما بوده است.
فکر نمیکنم دستوری برای اینکار وجود داشته باشه ، به راحتی می تونه فایل های داخل پوشه Models که پروژه اضافه شدن روحذف کنیم. یا کلا پوشه Models رو حذف کنیم و دوباره بسازیم.
سلام خسته نباشید .در روش database first ،در رابطه با کلاس های ایجاد شده و نحوه استفاده از اونها توضیحی در سایت ندارین؟ چون من وقتی طبق این روش کلاس هارو ایجاد کردم ،نمیدونستم که چطوری باید روی دیتابیس عملیات انجام بدم.
اگر راهنمایی کنید ممنون میشم.
سلام وقتتون بخیر شما با استفاده از EntityFramework میتونید عمیات درج و حذف و آپدیت و … روی دیتابیس انجام بدید.
با عرض سلام در Package Manager Console این دستور رو وارد کردم
PM> Scaffold-DbContext “Data Source=PROGRAMMING;Initial Catalog=StudentDB;Integrated Security=True;”
ولی این پیغام خطا ظاهر میشه
Scaffold-DbContext : The term ‘Scaffold-DbContext’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was
included, verify that the path is correct and try again.
At line:1 char:1
+ Scaffold-DbContext “Data Source=PROGRAMMING;Initial Catalog=StudentDB …
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Scaffold-DbContext:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
ممکنه راهنمایی بفرمایید
سپاس
سلام وقتتون بخیر
از طریق Package Manager console دستور زیر را اجرا کنید تا پکیج Microsoft.EntityFrameworkCore.Tools نصب شود سپس دوباره دستور را وارد کنید.
Install-Package Microsoft.EntityFrameworkCore.Tools
سلام ببخشید تو دوره asp. Core آموزش تولید api به صورت json برای استفاده در اندروید موجوده؟ اگر بله تو کدوم فصل (:
سلام وقتتون بخیر
توی فیلم آموزشی ASP.NET Core فصل 14 در مورد web api به صورت مفصل صحبت کردیم.
سلام . ممکنه همینطور که به صورت ساده این آموزش را قرار دادید . نحوه تزریق وابستگی را در ادامه آموزش بدین ؟
ممنون
سلام ، تا یک ماه آینده آموزش های مقاله محور زیادی برای ASP.NET Core خواهیم داشت تزریق وابستگی هم جزو آموزش هایی هست که در آینده منتشر می شود.
سلام من سه تا سر فصل آخر شما رو انجام دادم . از آموزش EntityFramework Core . ولی برنامم ارور میده توی اجرای کنترلر. نباید Dependency Injection انجام داد؟؟
اینم ارورش :
InvalidOperationException: Unable to resolve service for type ‘WebEnsh1.Models.ENSHEABContext’ while attempting to activate ‘WebEnsh1.Controllers.PmankarsController’.
سلام ، بله باید تزریق وابستگی انجام داد برای کلاس Context ، تا این خطا رفع بشه.
چرا در زمینه وردپرس هیچ فعالیتی ندارید؟
سلام دوست عزیز، وقت شما بخیر. ما کلی مقاله رایگان درباره سئو وردپرس داریم و همینطور خدمات افزایش سرعت سایت برای وردپرس و از طرفی آموزش های خصوصی حرفه ای برای وردپرس فراهم است. و همینطور دوره های مجازی که برای سایتهای وردپرس مفید هستند مثل سرچ کسنول و gtmetrix و …. همه این موارد در منو سایت قابل دیدن هستند. موفق باشید.