سلام
گاهی توی پروژه ها نیاز میشه که یک سری اطلاعات مثل اطلاعات مربوط به کاربر ادمین یا مثلا نقش ها rollها و غیره بصورت خودکار اضافه بشه که برای این مسیله ما میاییم از Seed data و متد HasData استفاده میکنیم مثل زیر:
public void Configure(EntityTypeBuilder<JobsChart> builder)
{
builder.HasData(
new JobsChart
{
JobsChartId = 1,
JobsChartName = "مدیر عامل",
JobsChartDescription = "بالاترین رده",
JobsChartLevel = 0
});
}
اما سوال من اینجاست که برای درج رکودهای پیش فرض user و roll که در Identity یک سری ستون های پیش فرض دارند که خود Identity اون ها رو ایجاد میکنه مثل PasswordHashed و ... تکلیف چی میشه؟ ما چطوری میتونیم مثلا یک کاربر با نقش ادمین بصورت پیش فرض با Migraton ایجاد کنیم؟
دقت کنید که من نمیخوام دستی و از بانک اطلاعاتی این کار رو انجام بدم و میخوام برنامه این کار رو انجام بده در واقع این کار برای tableهایی که خودم اضافه کردم صورت میگیره ولی تقریبا تمامی tableهایی که خود identity اضافه کرده رو ظاهرا به این راحتی نمیشه مقدار پیش فرض داد بهشون ممنون میشم راهنمایی کنید یا اگر واقعا این کار امکان نداره راهنمایی کنید که راه حل جابگزینش چیه به جز رفتن سراغ بانک اطلاعاتی؟
شما می تونید برای Seed کردن اطلاعات یک کلاس ایجاد کنید و در جداول AspNetUsers و AspNetRoles و AspNetUserRoles اطلاعات رو ثبت کنید. نمونه زیر رو خودم توی پروژه ام استفاده کردم و مشکلی نداره:
public static class Seed
{
public static void SeedUsers(this ModelBuilder modelBuilder)
{
var roles = new List<Role>
{
new Role{Id = "603d125d-f84a-46e1-bfb7-48a199a51c39", Name = "Admin"},
new Role{Id ="5d726248-fc7c-49b3-af66-921d8e2a7280", Name = "Owner"},
new Role{Id = "9d9b95d7-9347-42da-ab97-a1cbb6f50081", Name = "Guest"}
};
foreach (var role in roles)
{
modelBuilder.Entity<Role>().HasData(role);
}
var hasher = new PasswordHasher<IdentityUser>();
modelBuilder.Entity<User>().HasData(
new User
{
Id = "769c4fd7-ce76-4bbc-a7db-c803efd02ba9", // primary key
Locked = false,
FirstName = "مهدی حسینی ",
LastName = "مدیر سایت",
PhotoUrl = "default.jpg",
SecurityStamp = Guid.NewGuid().ToString(),
UserName = "Admin",
NormalizedUserName = "Admin",
PasswordHash = hasher.HashPassword(null, "User@123")
}
);
modelBuilder.Entity<User>().HasData(
new User
{
Id = "378fd964-0b06-4f77-93ff-95ed2368e5b3", // primary key
Locked = false,
FirstName = "ناصر احمدی ",
LastName = "مشتری",
PhotoUrl = "default.jpg",
SecurityStamp = Guid.NewGuid().ToString(),
UserName = "Guest",
NormalizedUserName = "Guest",
PasswordHash = hasher.HashPassword(null, "User@123")
}
);
modelBuilder.Entity<UserRole>().HasData(
new UserRole
{
RoleId = "603d125d-f84a-46e1-bfb7-48a199a51c39",
UserId = "769c4fd7-ce76-4bbc-a7db-c803efd02ba9"
}
);
modelBuilder.Entity<UserRole>().HasData(
new UserRole
{
RoleId = "9d9b95d7-9347-42da-ab97-a1cbb6f50081",
UserId = "378fd964-0b06-4f77-93ff-95ed2368e5b3"
}
);
}
}
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
116
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
394
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
561
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|