محمد کمائی - Telegram : @komayi
محمد کمائی - Telegram : @komayi
خواندن ۱ دقیقه·۳ سال پیش

درج رکوردهای اولیه رل در کد فرست - ef core role seed in code first

وقتی میخواین کد فرست کار کنید و بعد از migration رکوردهای اولیه ای در جدولتون داشته باشید باید عملیات seed انجام بدین. در code first پیشنهاد میکنم فایلهای تنظیمات انتیتی تون رو جدا کنید مثلا در فایل UserConfig و فایل DbContext متد OnModelCreating رو طولانی نکنید.

برای اضافه کردن این کلاسهای Config هم لازم نیست تک تک به OnModelCreating اضافه کنید ، کافی است اسمبلی یکی از اونها رو با 1 خط فقط اضافه کنید (با متد ApplyConfigurationsFromAssembly) ، ef core همه اون کلاسهای تنظیم رو اعمال میکنه.

اما عملیات seed طبق مستندات ماکروسافت محدودیت هایی هم دارد ، یکی از اون محدودیت ها این است :

Data that needs key values to be generated by the database, including entities that use alternate keys as the identity.

یعنی فیلدهایی که توسط دیتابیس پر میشن مثل فیلدهای پرایمری کی از نوع indentity

اگر بخواین برای Role رکوردهای پیش فرض seed کنید و Id رو پر نکنید این ارور رو میگیرید:

The seed entity for entity type 'Role' cannot be added because a non-zero value is required for property 'Id'. Consider providing a negative value to avoid collisions with non-seed data.

پس باید Id رو مقداردهی کنید.

برای دیدن کدهای مورد نیاز به این پست بنده در stackoverflow مراجعه کنید:

https://stackoverflow.com/a/71007605/9875486


ef corecore firstseeduserrole
C# , .net core & angular & blazor , sql server
شاید از این پست‌ها خوشتان بیاید