ASP.NET标识创建一个帐户

时间:2014-07-25 08:31:29

标签: asp.net asp.net-mvc asp.net-identity

我使用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

有人请告诉我在代码中遗漏的可能导致此异常的内容。

提前致谢。

此致

沃尔特

1 个答案:

答案 0 :(得分:1)

在你把结果放到之前你应该这样做:

userManager = new UserManager<ApplicationUser>(); 

或在声明中将其设置为null