尝试使用EF4.1 Code First创建数据库时出现奇怪错误

Div*_*Dan 2 entity-framework-4.1

我首先使用EF4.1代码创建数据库.

我的模型在mvc3中看起来像这样

    public class BusinessContactDetailsModel
    {
        public int Id { get; set; }

        [Display(Name = "Contact Date")]
        public DateTime ContactDate { get; set; }

        [Range(1, 5)]
        [Display(Name = "Outcome Rating")]
        public int OutcomeRating { get; set; }

        [DataType(DataType.MultilineText)]
        public string Comment { get; set; }


        public int BusinessId { get; set; }

        [Display(Name = "Method of Contact")]
        public int FormOfContactId { get; set; }

        [Display(Name = "Follow up Date")]
        public DateTime FollowUpDate { get; set; }

    }
Run Code Online (Sandbox Code Playgroud)

当我尝试在构建过程中运行应用程序时失败.我知道它的FollowUpProperty导致问题,因为它是我刚刚添加的一个新属性,如果我将属性从DateTime更改为Int它可以正常工作.

还有其他人有过这种问题吗?

我的堆栈跟踪看起来像

[SqlCeException(0x80004005):转换为datetime时发生溢出.] System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr)+125 System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr&pCursor,Boolean&isBaseTableCursor)+631 System. Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior,String method,ResultSetOptions options)+509 System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()+46 System.Data.SqlServerCe.SqlCeMultiCommand.ExecuteReader(CommandBehavior behavior)+152 System.Data .SqlServerCe.SqlCeMultiCommand.ExecuteDbDataReader(CommandBehavior behavior)+36 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)+10 System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator,EntityConnection connection,Dictionary 2 identifierValues, List1 generatedValues )+8118684 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)+267

[UpdateException:更新条目时发生错误.有关详细信息,请参阅内部异常.] System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)+389 System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)+163 System.Data.Objects .ObjectContext.SaveChanges(SaveOptions options)+609 System.Data.Entity.Internal.InternalContext.SaveChanges()+326

[DbUpdateException:更新条目时发生错误.有关详细信息,请参阅内部异常.] System.Data.Entity.Internal.InternalContext.SaveChanges()+372 System.Data.Entity.Internal.LazyInternalContext.SaveChanges()+48 System.Data.Entity.DbContext.SaveChanges()+ 47 System.Data.Entity.DropCreateDatabaseIfModelChanges 1.InitializeDatabase(TContext context) +502 System.Data.Entity.<>c__DisplayClass21.b_ 0(DbContext c)+143 System.Data.Entity.Internal.<> c _DisplayClass5.b__3()+59 System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action )+101

[DataException:初始化数据库时发生异常.有关详细信息,请参阅InnerException.] System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)+157 System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()+260 System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c)+31 System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) +147 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action1 action)+276 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()+112 System.Data.Entity.Internal.InternalContext.Initialize()+41 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)+34 System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +148 System.Data.Entity.Internal.Linq.InternalSet1.GetEnumerator()+33 System.Data.Entity.Infrastructure.DbQuery 1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() +91 System.Collections.Generic.List1..ctor(IEnumerable 1 collection) +315 System.Linq.Enumerable.ToList(IEnumerable1源代码)+ 58 MyApplication.CRM.Controllers.BusinessController.Index()在C:\ Users\sp\documents\visual studio 2010\Projects\MyApplication.CRM\MyApplication.CRM\Controllers\BusinessController.cs:23 lambda_method(Closure) ,ControllerBase,Object [])+ 96 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase控制器,Object []参数)+17 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary 2 parameters) +208 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2参数)+27 System.Web.Mvc.<> c_ DisplayClass15.b _12()+55 System.Web. Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter过滤器,ActionExecutingContext preContext,Func 1 continuation) +263 System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1过滤器,ActionDescriptor actionDescriptor,IDictionary 2 parameters) +191 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 System.Web.Mvc.Controller.ExecuteCore() +116 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 System.Web.Mvc.Async.<>c__DisplayClass81.b__7(IAsyncResult )+12 System.Web.Mvc.Async.WrappedAsyncResult`1.End()+ 62 System.Web.Mvc .<> c _DisplayClasse.b_ d()+50 System.Web.Mvc.SecurityUtil.b _0(Action f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)+22 System.Web.Mvc.MvcHandler .EndProcessRequest(IAsyncResult asyncResult)+60 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)+9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 8862381 System. Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously )+184

Div*_*Dan 5

事实证明这是因为DateTime不可为空.我将其更改为允许空日期,现在工作正常.