Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 配置文件的种子方法中的NullReferenceException_C#_Asp.net Mvc_Entity Framework_Nullreferenceexception - Fatal编程技术网

C# 配置文件的种子方法中的NullReferenceException

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

我不太清楚为什么我的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();

                }

            }
//角色
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;