ASP.NET MVC4 lambda表达式错误-对象引用未设置为对象的实例

ASP.NET MVC4 lambda表达式错误-对象引用未设置为对象的实例,asp.net,asp.net-mvc,asp.net-mvc-4,lambda,object-reference,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Lambda,Object Reference,我在第146行一直看到这个错误。如果有人能向我解释这个错误,我将不胜感激 “/”应用程序中出现服务器错误。 对象引用未设置为对象的实例 说明:执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源 异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例 源错误: Line 144: var courses = dc.Courses.ToList(). Line 145:

我在第146行一直看到这个错误。如果有人能向我解释这个错误,我将不胜感激


“/”应用程序中出现服务器错误。 对象引用未设置为对象的实例

说明:执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例

源错误

Line 144:            var courses = dc.Courses.ToList().  
Line 145:                Where(course =>  
Line 146:                    course.   <------??????
Line 147:                    User. 
Line 148:                    Id ==   
Line 149:                    currentUserId);
[NullReferenceException: Object reference not set to an instance of an object.]
   igoryen.ViewModels.<>c__DisplayClassb.<getListOfCourseBaseAM>b__a(Course course) in c:\aaa\vat\c#\proj\igoryen\igoryen\ViewModels\Repo_Course.cs:146
   System.Linq.WhereListIterator`1.MoveNext() +56
   System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +381
   System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
   AutoMapper.Mappers.EnumerableMapperBase`1.Map(ResolutionContext context, IMappingEngineRunner mapper) +273
   AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context) +838

[AutoMapperMappingException: 

Mapping types:
WhereListIterator`1 -> IEnumerable`1
System.Linq.Enumerable+WhereListIterator`1[[igoryen.Models.Course, igoryen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> System.Collections.Generic.IEnumerable`1[[igoryen.ViewModels.CourseBase, igoryen, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

Destination path:
IEnumerable`1

Source value:
System.Linq.Enumerable+WhereListIterator`1[igoryen.Models.Course]]
   AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context) +936
   AutoMapper.MappingEngine.Map(Object source, Type sourceType, Type destinationType, Action`1 opts) +196
   AutoMapper.MappingEngine.Map(Object source, Action`1 opts) +172
   AutoMapper.MappingEngine.Map(Object source) +121
   AutoMapper.Mapper.Map(Object source) +107
   igoryen.ViewModels.Repo_Course.getListOfCourseBaseAM(String currentUserId) in c:\aaa\vat\c#\proj\igoryen\igoryen\ViewModels\Repo_Course.cs:151
   igoryen.ViewModels.Repo_Course.getSelectListOfCourse(String currentUserId) in c:\aaa\vat\c#\proj\igoryen\igoryen\ViewModels\Repo_Course.cs:136
   igoryen.Controllers.CancellationsController.Create() in c:\aaa\vat\c#\proj\igoryen\igoryen\Controllers\CancellationsController.cs:50
   lambda_method(Closure , ControllerBase , Object[] ) +101
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +59
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +435
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +60
   System.Web.Mvc.Async.ActionInvocation.InvokeSynchronousActionMethod() +76
   System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__36(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +36
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +73
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3c() +117
   System.Web.Mvc.Async.<>c__DisplayClass45.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3e() +323
   System.Web.Mvc.Async.<>c__DisplayClass30.<BeginInvokeActionMethodWithFilters>b__2f(IAsyncResult asyncResult) +44
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
   System.Web.Mvc.Async.<>c__DisplayClass28.<BeginInvokeAction>b__19() +72
   System.Web.Mvc.Async.<>c__DisplayClass1e.<BeginInvokeAction>b__1b(IAsyncResult asyncResult) +185
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(IAsyncResult asyncResult, ProcessRequestState innerState) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514928
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

更新2 不幸的是,我不能在这里发布屏幕截图,但我正在使用断点进行调试,没有看到任何
User
值为
null


更新3 我有以下文件:

  • Models/Initializer.cs
    其中我初始化了所有列表/表格
  • ViewModels/Repo_Course.cs
    其中我有执行查询的方法(返回错误)
我没有得到的部分是:
当我调试断点时,我看到:

  • Models/Initializer.cs
    中,当
    课程
    初始化时,
    用户
    有一个值且不为
    null
  • 但是
    ViewModels/Repo_Course.cs
    第146行(如上所示),
    用户
    !为什么

更新4
UserPeter
属于
ApplicationUser
类型:

var UserPeter = new ApplicationUser();
string userPw8 = "123456";
var userInfo8 = new MyUserInfo() { FirstName = "Peter", LastName = "Peterson" };
UserPeter.UserName = "Peter";
UserPeter.HomeTown = "Toronto";
UserPeter.MyUserInfo = userInfo8;
var UserPeterCreate = UserManager.Create(UserPeter, userPw8);
if (UserPeterCreate.Succeeded) {
    var addUserPeterToRole3Result = UserManager.AddToRole(UserPeter.Id, roleName3);
}
应用程序用户
类,它源自
标识用户

public class ApplicationUser : IdentityUser {
    //[Key]
    //public int Id { get; set; }
    public string HomeTown { get; set; } 
    //public virtual ICollection<Cancellation> Cancellations { get; set; }
    //public virtual ICollection<Course> Courses { get; set; }
    public virtual MyUserInfo MyUserInfo { get; set; }
}
IdentityUser
类(来自元数据):


您的用户对象列表中的一个值为空。

如果第146行进行空访问,则您的
课程
列表更可能包含
值,而不是有
用户的课程。

谢谢您的反馈!你能看看我的编辑2吗?这是我的问题。谢谢,安德鲁·刘易斯!你能看一下我的编辑3吗?在这种情况下,你可能想发布更多的源代码,例如
UserPeter
的实际定义和
课程
类的
User
成员。非常感谢你的输入。你能看看我的更新4吗?可能是
public class ApplicationUser : IdentityUser {
    //[Key]
    //public int Id { get; set; }
    public string HomeTown { get; set; } 
    //public virtual ICollection<Cancellation> Cancellations { get; set; }
    //public virtual ICollection<Course> Courses { get; set; }
    public virtual MyUserInfo MyUserInfo { get; set; }
}
public class MyUserInfo {
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
public class IdentityUser : IUser {
    public IdentityUser();
    public IdentityUser(string userName);

    public virtual ICollection<IdentityUserClaim> Claims { get; }
    public virtual string Id { get; set; }
    public virtual ICollection<IdentityUserLogin> Logins { get; }
    public virtual string PasswordHash { get; set; }
    public virtual ICollection<IdentityUserRole> Roles { get; }
    public virtual string SecurityStamp { get; set; }
    public virtual string UserName { get; set; }
}
public class Course { // 10
  public Course() {
    this.Faculty = new Faculty();
    this.Students = new List<Student>();
  }
  [Key]
  public int CourseId { get; set; }
  public string CourseCode { get; set; }
  public string CourseName { get; set; }
  public string RoomNumber { get; set; }
  public string RunTime { get; set; }
  public Faculty Faculty { get; set; }
  public List<Student> Students { get; set; }
  public virtual ApplicationUser User { get; set; }
}