C# 配置文件的种子方法中的NullReferenceException
我不太清楚为什么我的Seed方法会抛出异常 这是我的密码:C# 配置文件的种子方法中的NullReferenceException,c#,asp.net-mvc,entity-framework,nullreferenceexception,C#,Asp.net Mvc,Entity Framework,Nullreferenceexception,我不太清楚为什么我的Seed方法会抛出异常 这是我的密码: //Roles var roles = new List<Role> { new Role {RoleName = "Admin"}, new Role {RoleName = "SuperAdmin"} }; roles.ForEach(s => contex
//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();
}
}
//角色
var角色=新列表
{
新角色{RoleName=“Admin”},
新角色{RoleName=“SuperAdmin”}
};
roles.ForEach(s=>context.roles.AddOrUpdate(p=>p.RoleName,s));
SaveChanges();
//将2个超级管理员从AD添加到DB
凭证.GetUserByUsername(上下文,“凭证1”);
凭证.GetUserByUsername(上下文,“凭证2”);
SaveChanges();
//将超级管理员添加到列表中
var superAdmins=新列表();
User admin1=context.Users.Where(p=>p.Username==“credentials1”).FirstOrDefault();
User admin2=context.Users.Where(p=>p.Username==“crendetials2”).FirstOrDefault();
超级管理员添加(admin1);
超级管理员添加(admin2);
//在数据库中查找超级管理员角色
Role superAdminRole=context.Roles.Where(p=>p.RoleName==“SuperAdmin”).FirstOrDefault();
//将角色添加到每个用户
foreach(超级管理员中的用户)
{
如果(用户!=null)
{
superAdminRole.Users.Add(user);替换以下语句
superAdminRole.Users.Add(user);
与
另外,将context.SaveChanges()
从foreach
循环中取出。提示:FirstOrDefault可能返回null让我猜一下:您将FirstOrDefault用于superAdminRole,但没有这样的角色,因此superAdminRole变量为null。提示:不要调用SaveChanges()在一个循环中。我首先设置了一个断点,这比发布一个问题要快。可能是@Adriano的重复,OP说,在调试时发现了用户和角色
@Adriano确实,我可以看到在该点上同时找到了角色和用户对象。问题是,超级管理员。用户
为空。在用户模型是一个集合:公共虚拟ICollection角色{get;set;},因此我使用Add方法。还有其他方法吗?superAdminRole.Users
这是空的,不是吗?
user.Role = superAdminRole;