Я хотел бы иметь простое объяснение об этом посеве.Миграции C# MVC ASP.NET
Этот код работает.
protected override void Seed(RMQ.Models.ApplicationDbContext context)
{
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
if (!context.Users.Any(t => t.UserName == "[email protected]"))
{
var users = new ApplicationUser { Email = "[email protected]", UserName = "[email protected]", };
userManager.Create(users, "Password1!");
context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Admin" });
context.SaveChanges();
userManager.AddToRole(users.Id, "Admin");
}
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
}
Так что мой вопрос здесь об этой линии.
context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Admin" });
Таким образом, мы имеем (г => r.Name) В качестве первого параметра. Но я действительно этого не понимаю. Мы пытаемся получить доступ к названию свойства Роли. Но мы ничего не сделали с этим. Затем во втором параметре мы получим доступ и создали новый объект IdentityRole и вставили «Admin», чтобы передать его Свойство Name. < - Второй параметр легко понять, но что мы только что сделали в первом параметре?
Понятно, что мы просто получили доступ к свойству Name на AddOrUpdate, но ничего не сделали с ним. Любое объяснение было бы замечательным, поскольку я не хочу просто полагаться на рабочий код, не понимая его.
Я принял оба ответа, поскольку они оба правильные. Но я выбираю ответ Правеена, добавив, что «else вставить новую запись». Но ссылка Stefano Provided me заставляет меня понять, как была создана AddOrUpdate. – Aizen