دسته بندی ها
22:24 1398/09/11

علت ارور There is already an object named در migration

مشخصات سوال کننده :
کاربر : Noorizadeh     امتیاز کاربر : 5     رتبه کاربر : 110
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4248
پاسخ دهنده : pedram_khan 00:03 1398/09/12

اگر دیتابیس شما از قبل آماده هست یعنی به صورت database First آماده شده و حالا می خواید این دیتابیس رو تبدیل به Code First کنید باید مراحل زیر رو به ترتیب انجام بدید

 

استفاده از پکیج های کار با EntityFramework Core

در ابتدا باید دقت کنید که در پروژه شما پکیج های لازم برای کار با Entity Framework core اضافه شده باشه. در صورتی که این پکیج ها اضافه نشده روی نام پروزه در Solution Explorer کلیک راست کنید و گزینه Nuget Package Manager رو بزنید.

 

آموزش code first

 

سپس در فرم nuget و در قسمت Browse پکیج های زیر را سرچ کنید و نصب کنید

 

Microsoft.EntityFrameWorkCore.SqlServer
Microsoft.EntityFrameWorkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design

بعد از اینکه این پکیج ها رو نصب کردید می تونید از قابلیت های انتیتی فریم ورک کور استفاده کنید.

 

استفاده از دیتابیس موجود

دیتابیس شما باید روی Sql Server نصب شده روی کامپیوتر شما وجود داشته باشد. همچنین می توانید فایل mdf دیتابیس رو در کنار پروژه یا در یک مسیر خاص در کامپیوتر داشته باشید. اما گزینه بهتر این است که روی Sql Server ری استور شده باشد.

 

تبدیل دیتابیس موجود به مدل Code First

حالا موقع اون رسیده که دیتابیس موجود رو به صورت کدفرست تبدیل کنید. برای این کار از منوی Tools مانند تصویر زیر Nuget Package Manager رو باز کنید

 

استفاده از migration

 

حالا دستور زیر را برای تبدیل دیتابیس موجود به مدل Code first بنویسید

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

 

توسط دستور Scaffold-DbContext میتونید دیتابیس موجود رو به کلاسهای Code First تبدیل کنید. دقت کنید که عبارت بعد از Scaffold-DbContext همان کانکشن استرینگ می باشد. همچنین در این دستور مشخص شده که کلاس ها و فایل DbContext در پوشه Model باید ایجاد شود.

بعد از اجرای این دستور کلاسهای دیتابیس که همان جداول هستند به وجود می آید.

همچنین درون هر کلاس فیلدها و روابط بین اونها مشخص شده.

دقت کنید که برای استفاده از این Model ایجاد شده باید تنظیمات Connection String رو درون فایل appsetting.json انجام بدید و همچنین در فایل startup.cs هم تنظیمات و پیکربندیهای لازم انجام شده باشه.

حالا کافیه از طریق دستور زیر دیتابیس رو مجدد به روش code First و به روش Migration ایجاد کنید (البته دقت کنید که اگر در دیتابیس شما از قبل اطلاعاتی وجود داره نباید این مرحله به بعد رو انجام بدید.)

Add-Migration mig_name

 

و در انتها هم 

 

Update-Database

 

نکته ) اگر از قبل در دیتابیس شما اطلاعاتی وجود داشت فقط کافیه در دیتابیس یک جدول به نام __EFMigrationsHistory ایجاد کنید که شامل 2 فیلد MigrationID به عنوان کلید اصلی و ProductVersion از نوع nvarchar(32) باشه.

به این صورت دیتابیس شما به صورت Code First تبدیل میشه و می تونید از اون استفاده کنید. برای کسب اطلاعات بیشتر اینجا کلیک کنید

به این پاسخ امتیاز بدهید    ‎−2
امتیاز: 277 رتبه: 6
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود