首页 文章

NullReferenceException:在ef7中添加DateTime列后,对象引用未设置为对象的实例

提问于
浏览
-1

我是asp.net mvc ef 7的新手,试图从vb.net迁移 .

我有一个课程如下

[Table("MatGrp")]
public class MatGrp
{
    [Key]
    public decimal Grp_RNo { get; set; }

    [Required]
    [MaxLength(30)]
    [Display(Name = "Group Code")]
    public string Grp_Code { get; set; }

    [Required]
    [MaxLength(100)]
    [Display(Name = "Group Name")]
    public string Grp_Name { get; set; }
    public decimal Cre_By { get; set; }
    public DateTime Cre_DtTm { get; set; }
    public decimal Mod_By { get; set; }
    [DataType(DataType.DateTime)]
    public System.DateTime Mod_DtTm { get; set; }

}

我为这个类生成了一个控制器,如果我删除公共System.DateTime Mod_DtTm {get;组;来自该类的列,但添加此列会在此堆栈跟踪中显示错误

处理请求时发生未处理的异常 .

NullReferenceException:未将对象引用设置为对象的实例 . lambda_method(Closure,ValueBuffer)NullReferenceException:未将对象引用设置为对象的实例 . lambda_method(Closure,ValueBuffer)Microsoft.Data.Entity.Query.EntityLoadInfo.Materialize()Microsoft.Data.Entity.Query.Internal.QueryBuffer.GetEntity(IKeyValue keyValue,EntityLoadInfo entityLoadInfo,Boolean queryStateManager)Microsoft.Data.Entity.Query . ExpressionVisitors.RelationalEntityQueryableExpressionVisitor.CreateEntity [TEntity](IQuerySource querySource,ValueBuffer valueBuffer,Int32 valueBufferOffset,QueryContext queryContext,IEntityType entityType,Boolean trackingQuery,KeyValueFactory keyValueFactory,Func2 materializer,Boolean allowNullResult,Boolean useQueryBuffer)lambda_method(Closure,ValueBuffer)System.Linq .Enumerable . <> c__DisplayClass7_03.b__0(TSource x)System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext()Microsoft.Data.Entity.Query.Internal.LinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext()System . Collections.Generic.List1..ctor(IEnumerable1 collection)System.Linq.Enumerable.ToList [TSource](IEnumerable 1 source)MatGrpsController.cs中的FMWeb.Controllers.MatGrpsController.Index()返回View(_context.MatGrp.ToList()); ---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Mvc.Controllers.ControllerActionExecutor.ExecuteAsync(MethodInfo actionMethodInfo,Object instance,Object [] orderedActionArguments )Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker.d__6.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime . CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter1.GetResult()Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__53.MoveNext()---来自先前位置的堆栈跟踪结束,其中异常是抛出--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Mvc.Controllers.FilterActionInvoker.d__44.MoveNext()---来自先前位置的堆栈跟踪结束抛出xception --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Mvc.Infrastructure .MvcRouteHandler.d__6.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Routing.Template.TemplateRoute.d__27.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束--- System.Runtime.CompilerServices . TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspN et.Routing.RouteCollection.d__9.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Builder.RouterMiddleware.d__4.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪--- System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束--- System.Runtime.ExceptionServices.ExceptionDispatchInfo .Throw()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)System .Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext()---从以前的位置,其中异常堆栈跟踪的结尾被抛出--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext()---从上一个位置开始的堆栈跟踪除外离子被抛出--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务task)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Authentication.AuthenticationMiddleware 1.d__18.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext( )---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices . TaskAwaiter.GetResult()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪--- System.Ru ntime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Authentication.AuthenticationMiddleware1.d__18.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (任务task)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.ApplicationInsights.AspNet.ExceptionTrackingMiddleware.d__4.MoveNext()---从以前的堆栈跟踪的结尾位置在那里引发异常--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务task)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.IISPlatformHandler .IISPlatformHandlerMiddleware.d__8.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.CompilerServ ices.TaskAwaiter.ThrowForNonSuccess(任务任务)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Diagnostics.Entity.MigrationsEndPointMiddleware.d__5.MoveNext() - - 从先前的位置堆栈跟踪,其中引发异常的结束--- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务task)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)System.Runtime.CompilerServices.TaskAwaiter.GetResult ()Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.d__6.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()Microsoft.AspNet.Diagnostics .Entity.DatabaseErrorPageMiddleware.d__6.MoveNext()---抛出异常的前一个位置的堆栈跟踪结束--- System.Runtime.CompilerServices.TaskAwaite r.ThrowForNonSuccess(任务task)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务task)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext()

出了什么问题?如何分析/调试跟踪?提前致谢

Column Cre_DtTm允许null . 下面是表脚本:

CREATE TABLE [dbo].[MatGrp](  [Grp_RNo] [numeric](5, 0) NOT NULL,  
 [Grp_Code] [varchar](50) NOT NULL,  [Grp_Name] [varchar](50) NOT NULL,
 [Cre_By] [numeric](3, 0) NOT NULL,  [Cre_DtTm] [datetime] NULL, 
 [Mod_By] [numeric](3, 0) NOT NULL,  [Mod_DtTm] [datetime] NULL, 
 CONSTRAINT [PK_MatGrp_Grp_RNo] PRIMARY KEY CLUSTERED  ( [Grp_RNo] ASC
 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
 OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON
 [PRIMARY]

2 回答

  • 0

    哦,我觉得这是一个愚蠢的错误 . 该列允许在表定义中使用null数据库,但它还必须允许类中的null(?在DateTime?中允许为null)public DateTime? Cre_DtTm {get;组; }

    这解决了这个问题 .

  • 6

    检查数据库 . 如果它是一个NOT NULL列并且您在不使用默认值的情况下添加它,那么它将变得非常容易

相关问题