迁移 C# MVC ASP.NET
Migrations 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 == "Admin@RMQ.com"))
{
var users = new ApplicationUser { Email = "Admin@RMQ.com", UserName = "Admin@RMQ.com", };
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 = >r.Name) 作为第一个参数。但我真的不明白,我们尝试访问角色字段 属性 名称。但是我们没有对它做任何事情。然后是第二个参数,我们访问并创建了一个新的 IdentityRole 对象并插入 "Admin" 作为传递它的名称 属性。 <- 第二个参数很容易理解,但是我们刚刚在第一个参数中做了什么?
据我了解,我们只是访问了 AddOrUpdate 上的名称 属性,但并未对其执行任何操作。任何解释都会很好,因为我不想在不理解的情况下仅仅依赖工作代码。
第一个参数是 Key,它通过它标识操作应该是添加还是更新。 EF 将按该列作为键搜索记录。如果找到一条记录,它将更新该记录或插入一条新记录。
这是一个关于表达式的更多 C# 问题。
此参数的目的是告诉 EF 哪个字段用于标识条目,在本例中为名称字段。
这与主键不同,因为它可以是自动生成的字段。
https://msdn.microsoft.com/en-us/library/hh846514(v=vs.103).aspx
我想对这个种子做一个简单的解释。
此代码有效。
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 == "Admin@RMQ.com"))
{
var users = new ApplicationUser { Email = "Admin@RMQ.com", UserName = "Admin@RMQ.com", };
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 = >r.Name) 作为第一个参数。但我真的不明白,我们尝试访问角色字段 属性 名称。但是我们没有对它做任何事情。然后是第二个参数,我们访问并创建了一个新的 IdentityRole 对象并插入 "Admin" 作为传递它的名称 属性。 <- 第二个参数很容易理解,但是我们刚刚在第一个参数中做了什么?
据我了解,我们只是访问了 AddOrUpdate 上的名称 属性,但并未对其执行任何操作。任何解释都会很好,因为我不想在不理解的情况下仅仅依赖工作代码。
第一个参数是 Key,它通过它标识操作应该是添加还是更新。 EF 将按该列作为键搜索记录。如果找到一条记录,它将更新该记录或插入一条新记录。
这是一个关于表达式的更多 C# 问题。 此参数的目的是告诉 EF 哪个字段用于标识条目,在本例中为名称字段。
这与主键不同,因为它可以是自动生成的字段。
https://msdn.microsoft.com/en-us/library/hh846514(v=vs.103).aspx