خطای The entity type 'x' requires a primary key to be defined در مایگریشن
سلام
یک مدل به جداول قبلی بانک اطلاعاتی اضافه کردم
رفتم در SQL Server کل Database رو پاک کردم
پوشه Migrations رو هم پاک کردم
سییستم رو هم رستارت کردم ....
حالا هرچقدر add-migration میزنم خطا میده :
PM> add-migration new
System.InvalidOperationException: The entity type 'SelectListGroup' requires a primary key to be defined.
The entity type 'SelectListGroup' requires a primary key to be defined.
لطفا راهنمایی بفرمایید.
ضمنا قبل از پاک کردن پایگاه داده هم add-migration زده بودم ، که پس از اجرا به هر کنترلری که میرفت که در آن صحبت از List شده بود . این خطا رو می گرفت که برای ایجاد لیست به یک Primery Key در Entity Frameworkاحتیاج دارم ...
دلیل خطای The entity type 'SelectListGroup' requires a primary key to be defined
دلیل این خطا کاملا مشخص هست. داره میگه شما یک انتیتی (جدول) به نام SelectedListGroup دارید که کلید اصلی براش تعریف نکردید.
public class SelectListGroup
{
[Key]
public int Id {get; set;}
public string Title {get; set;}
}
دقت کنید که در انتیتی فریم ورک برای همه جداول باید کلید اصلی تعریف بشه.
در مورد اینکه می فرمایید پایگاه داده و مایگریشن ها رو هم حذف کردید برای این کار باید یه سری قواعد رو رعایت کنید. در لینک زیر نحوه این کار توضیح داده شده.
public class BaseEntity
{
public int Id { get; set; }
}
public class product : BaseEntity
{
دیکه لازم نست اینجا id تعریف بشه
}
سلام
میتونید یک کلاس تعریف کنید فیلدهای مشترک در همه مدل ها رو در اون قرار بدبد و مدلهای دیگه رو از اون ارث بری داشته باشند
با مواردی که دوستان گفتند حل نشد .
بصورت خلاصه عرض میکنم :
در ViewModel هائی که یک لیست از جدول دیگه تهیه میکنند . Property مورد نظر رو باید Attribute [NotMapped] بزنید !
و فضای نام using System.ComponentModel.DataAnnotations.Schema; روهم اضافه کنید
قطعه زیر یک مثال است . . .
using System.ComponentModel.DataAnnotations.Schema;
.
.
.
[NotMapped]
public List<SelectListItem> ApplicationRoles { get; set; }
[Display(Name = "نقش ")]
public string ApplicationRoleId { get; set; }
من توضیح بیشتری ندارم جز اینکه :
تمام جداول من کلید اصلی داشت
تا دیروز کدهای من کار میکردند . و روزی چندین بار دیباگ میشدند و ایرادی نبود . تا اینکه خواستم یک پراپرتی از مدل دو پراپرتی رو داینامیک بکنم .
به هر حال ایراداتی اینچنینی باید یک روز من رو از بین ببرند . اجازه بدید به این ایرادات بگوئیم : ایراد سمّی!
با تشکر از شما
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2