دسته بندی ها
01:04 1400/03/13

دلیل خطای Unable to track an entity of type because primary key property 'id' is null

مشخصات سوال کننده :
کاربر : Kavosh     امتیاز کاربر : 0     رتبه کاربر : 7020
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4391
2 نظر
hamid_b : خب چه خطایی داره ؟ شما فقط گفتید خطا دارید ولی هیچ اشاره ای هم نمی کنید خطا چیه !!!

امتیاز کاربر : 510   رتبه کاربر : 4   تاریخ ثبت : 01:14 1400/03/13
Kavosh : سلام دیتا بیس قبلی را هم اوکی کردم باز هم خطا را دارم و ظاهرا از سمت برنامه id به سمت sql نمی ره، نمی دونم مشکل از Identity هست یا نه

امتیاز کاربر : 0   رتبه کاربر : 7020   تاریخ ثبت : 12:05 1400/03/14
پاسخ دهنده : hamid_b 05:19 1400/03/16

سلام. در آیدنتیتی یک سری جداول و فیلدها به صورت ثابت وجود داره که پیش فرض خود Identity هستن. حالا اگر شما این پیش فرض ها رو تغییر بدید ممکنه برخی تنظیمات به هم بخوره. به عنوان مثال در جدول AspNetUsers فیلد Id کلید اصلی هست. اگر شما نام این جدول یا نام این ستون رو تغییر بدید تنظیمات پیش فرض خراب میشه. بنابراین باید خودتون به صورت دستی بهش بگید که برای Id یک مقدار رو Generate کنه.

 

در کلاس ApplicationDbContext

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);
    builder.Entity<ApplicationUsers>(entity =>
    {
        entity.ToTable(name: "Users_Tbl");
        entity.Property(e => e.Id).HasColumnName("UserID");
        entity.Property(e => e.Id).ValueGeneratedOnAdd();    
    });
}

 

در کد بالا نام جدول AspNetUsers رو به Users_Tbl و نام فیلد Id رو به UserID تغییر دادیم. در خط بعدی هم گفتیم برای Id که الان UserID هست یک مقدار موقع اضافه شدن یک رکورد جدید ایجاد کن.

به این پاسخ امتیاز بدهید    1
امتیاز: 510 رتبه: 4
1 نظر
ahmadikia : سلام پاسخ شما بسیار عالی بود اشکال من هم رفع شد

امتیاز کاربر : 13   رتبه کاربر : 55   تاریخ ثبت : 09:07 1401/03/13
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود