我使用ASP.NET MVC 5.0 EF 6.0和Identity 1.0来构建应用程序。
我有一个种子功能,目前运行成功并插入各种数据,如教师'进入数据库。我想扩展种子功能,这样当我创建一个新的教师时,它还会在AspNetUsers表中创建一个新的用户帐户。
我在文件' SampleData.cs':
中尝试了以下代码using System.Collections.Generic;
using System.Linq;
using System.Data.Entity;
using Oberhofen.EdNow.Data.Models;
using Oberhofen.EdNow.Model.Models;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using System;
namespace Oberhofen.EdNow.Data
{
public class EdNowSampleData : DropCreateDatabaseIfModelChanges<EdNowEntities>
{
private UserManager<ApplicationUser> userManager;
protected override void Seed(EdNowEntities context)
{
// Create a new Account.
string UserName = "wallock";
string Password = "Password";
var user = new ApplicationUser { UserName = UserName, Email = "zzzz@gmail.com" };
var result = userManager.Create(user, Password);
var userId = user.Id;
// Create new Teachers.
var teachers = new List<Teacher>
{
new Teacher { FirstName = "Walter", LastName = "Lockhart", PersonTypeId=2, UserId=userId }
};
teachers.ForEach(tchr => context.Teachers.Add(tchr));
context.Commit();
}
}
}
当我在行上运行代码时:
var result = userManager.Create(user, Password);
我得到以下异常:
类型&#39; System.ArgumentNullException&#39;的异常发生在Microsoft.AspNet.Identity.Core.dll&gt;但未在用户代码中处理。 值不能为空。 参数名称:manager
有人请告诉我在代码中遗漏的可能导致此异常的内容。
提前致谢。
此致
沃尔特
答案 0 :(得分:1)
在你把结果放到之前你应该这样做:
userManager = new UserManager<ApplicationUser>();
或在声明中将其设置为null
。