我不确定为什么我的Seed方法会抛出异常。
这是我的代码:
//Roles
var roles = new List<Role>
{
new Role {RoleName = "Admin"},
new Role {RoleName = "SuperAdmin"}
};
roles.ForEach(s => context.Roles.AddOrUpdate(p => p.RoleName, s));
context.SaveChanges();
//Adds the 2 superadmins from AD to DB
Credentials.GetUserByUsername(context, "credentials1");
Credentials.GetUserByUsername(context, "credentials2");
context.SaveChanges();
//Add the superadmins to a List
var superAdmins = new List<User>();
User admin1 = context.Users.Where(p => p.Username == "credentials1").FirstOrDefault();
User admin2 = context.Users.Where(p => p.Username == "crendetials2").FirstOrDefault();
superAdmins.Add(admin1);
superAdmins.Add(admin2);
//Find the SuperAdmin role in DB
Role superAdminRole = context.Roles.Where(p => p.RoleName == "SuperAdmin").FirstOrDefault();
//Add the role to each user
foreach (User user in superAdmins)
{
if (user != null)
{
superAdminRole.Users.Add(user); <---- This is throwing the exception
context.SaveChanges();
}
}
superAdminRole.Users.Add(user)抛出异常。我可以看到调试时发现用户和角色都是如此,所以我不确定为什么我会得到例外。
这样做是否为时尚早?我假设我的上下文此时能够处理此操作,因为用户和角色都在数据库中。
最后一个细节:如果我此时停止调试并再次运行应用程序,我没有得到异常,并且正确分配了角色。我想避免两次运行Seed方法。
答案 0 :(得分:0)
替换以下声明
superAdminRole.Users.Add(user);
与
user.Role = superAdminRole;
也可以从context.SaveChanges()
循环中取出foreach
。