دسته بندی ها
14:41 1399/11/23

خطای The entity type 'x' requires a primary key to be defined در مایگریشن

مشخصات سوال کننده :
کاربر : sadati     امتیاز کاربر : 17     رتبه کاربر : 41
دسته بندی : Entity Framework Sql Server Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4320
پاسخ دهنده : fateme 20:06 1399/11/23

دلیل خطای 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;}

}

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

در مورد اینکه می فرمایید پایگاه داده و مایگریشن ها رو هم حذف کردید برای این کار باید یه سری قواعد رو رعایت کنید. در لینک زیر نحوه این کار توضیح داده شده.

 

حذف کامل Migration در Asp.net core و ایجاد دوباره آن

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
2 نظر
sadati : من همچین جدولی با این اسم ندارم

امتیاز کاربر : 17   رتبه کاربر : 41   تاریخ ثبت : 10:51 1399/11/23
sadati : حلش کردم . این یک ایراد بسیار سمی هستش . راه حل عجیبی داره. نمیدونم چرا تا حالا این ایراد رو نگرفته بود . به schema ارتباط داره !!!

امتیاز کاربر : 17   رتبه کاربر : 41   تاریخ ثبت : 11:16 1399/11/23
پاسخ دهنده : shahrokhnazari 23:32 1399/11/23
public class BaseEntity
{
    public int Id { get; set; }
}

public class product : BaseEntity
{
دیکه لازم نست اینجا id تعریف بشه
}

سلام

میتونید یک کلاس تعریف کنید فیلدهای مشترک در همه مدل ها رو در اون قرار بدبد و مدلهای دیگه رو از اون ارث بری داشته باشند

 

 

ویرایش شده در جمعه 24 بهمن 1399 ساعت 00:32:24
به این پاسخ امتیاز بدهید    0
امتیاز: 5 رتبه: 110
پاسخ دهنده : sadati 23:44 1399/11/23

با مواردی که دوستان گفتند حل نشد . 

بصورت خلاصه عرض میکنم :

 در 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; }

من توضیح بیشتری ندارم جز اینکه :

تمام جداول من کلید اصلی داشت 

تا دیروز کدهای من کار میکردند . و روزی چندین بار دیباگ میشدند و ایرادی نبود . تا اینکه خواستم یک پراپرتی از  مدل دو پراپرتی رو داینامیک بکنم . 

به هر حال ایراداتی اینچنینی باید یک روز من رو از بین ببرند . اجازه بدید به این ایرادات بگوئیم : ایراد سمّی!

با تشکر از شما 

 

ویرایش شده در پنج شنبه 23 بهمن 1399 ساعت 23:47:34
به این پاسخ امتیاز بدهید    2
امتیاز: 17 رتبه: 41
2 نظر
hamid_b : البته این ایرادات گرچه روز شما رو از بین میبرن اما وقت شما رو از بین نمیبرن!!! چون برنامه نویسی یعنی همین کلا!

امتیاز کاربر : 510   رتبه کاربر : 4   تاریخ ثبت : 00:33 1399/11/24
yas20 : باسلام و احترام میشه لطفا توضیح بدین که برای این ارور باید چه کار انجام داد؟

امتیاز کاربر : 0   رتبه کاربر : 7020   تاریخ ثبت : 09:58 1401/05/25
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود