دلیل خطای Unable to track an entity of type because primary key property 'id' is null
من پروژه ام نوشتم و همه چیز درست بود ولی مجبور شدم فایل ها را از روی سیستم بردارم و روی سیستم دیگری اجرا کنم و دوباره دیتابیس را نصب کنم در nuget قسمت console دیتابیس را آپدیت کردم تا شروع به کار کنم، دیتا بیش اوکی شد ولی وقتی برنامه را باز می کنم و می خوام یوزر جدید تعریف کنم مشکل id می گیره و ظاهرا Id نمی ده به دیتابیس حتی همه migration ها و دیتا بیس را در sql پاک کردم دوباره یه migration جدید درست کردم دیتابیس را هم آپدیت کردم دیتا بیس اوکی هست ولی همون اشکال وجود چون تا حالا identity کار نکردم نمی دونم مشکل از چی هست در صورتی که قبلش اوکی بوده.
خطای دریافت شده :
Unable to track an entity of type 'AppUsers' because primary key property 'id' is null
تصویر خطا هم در ادامه نمای میدم :
پاسخ هوش مصنوعی
این خطا معمولاً زمانی رخ می دهد که شما سعی دارید یک موجودیت (Entity) را با یک شناسه (ID) که خالی است یا مقداردهی نشده است، در بانک اطلاعاتی ذخیره کنید. در این مورد خاص، به نظر می رسد که یک سوییچ (شاید Identity) در شناسه کاربر شما به درستی کار نمی کند.
تعدادی نکته برای بررسی وجود دارد:
اطمینان حاصل کنید که خاصیت 'id' در مدل شما به درستی تعریف شده است و به عنوان کلید اصلی (Primary Key) مشخص شده است.
بررسی کنید که آیا خاصیت 'id' به صورت خودکار (Auto-increment) مقداردهی می شود یا خیر. معمولاً این کار با استفاده از ویژگی های Entity Framework انجام می شود:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
بررسی کنید که مهاجرت های جدید شما به درستی ایجاد شده اند و نقش 'id' در دیتابیس به درستی تنظیم شده است. می توانید از پنل SQL Server Management Studio (SSMS) برای بررسی ساختار جدول استفاده کنید.
هنگام ذخیره موجودیت جدید در دیتابیس، اطمینان حاصل کنید که شناسه (id) را به صورت دستی تنظیم نمی کنید. بگذارید EF آن را برای شما تنظیم کند.
اگر مشکلات ادامه داشت، ممکن است بخواهید که یک پروژه جدید با پیکربندی مشابه ایجاد کنید و تست کنید که آیا همان مشکل رخ می دهد یا خیر. این کار می تواند به شناسایی اینکه آیا مشکل از پیکربندی پروژه است یا خیر کمک کند.
سلام. در آیدنتیتی یک سری جداول و فیلدها به صورت ثابت وجود داره که پیش فرض خود 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 هست یک مقدار موقع اضافه شدن یک رکورد جدید ایجاد کن.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2