我有2个实体 - 角色和管理员。角色有两个值 - 搜索管理员和超级管理员。我使用EF Code First模型创建了这些。现在我尝试将值赋予数据库并首先添加角色:
private static void SeedRoles(PayByPhoneDbContext context)
{
var roles = new List<Role> {new Role {Name = "Search Administrator"}, new Role {Name = "Super Administrator"}};
roles.ForEach(role => context.Roles.Add(role));
}
现在我想在添加管理员时使用上面创建的一个角色:
private void SeedAdministrators(PayByPhoneDbContext context)
{
var administrators = new List<Administrator>{new Administrator {Email = "a@a.com", Name = "Achinth Gurkhi", Password = "hello", Active = true, Role = ? }}
}
如何在此处设置角色?我应该说Role = new Role { Name = "Super Administrator" }
还是搜索SeedRoles方法插入的角色?另外,如何使用上下文搜索现有角色?
答案 0 :(得分:3)
如果在对上下文执行SaveChanges
之前调用了这两个方法,则必须使用在SeedRoles
中创建的相同角色实例,否则将创建另一个具有相同名称的Role
。您必须将创建的角色/角色传递给SeedAdministrators
(这是正确的方法),或者您可以尝试查询context.Roles.Local.Where(r => r.Name = "...")
并搜索角色。