使用ASP.NET MVC 4的实体框架5RC
我有一个包含以下字段的表格:
编辑器nvarchar(200)可以为空
我在我的应用程序中生成了一个新的EF模型,并使用模型图上的“添加代码生成项...”生成了POCO实体。我保存了更改,清理了解决方案,并重建了整个解决方案。当我运行我的应用程序并尝试添加或编辑此类实体时,EF5RC会报告
“无法将值NULL插入列'Editor',表'@T';列不允许空值.INSERT失败。 声明已经终止。“
数据库表字段可以为空。我回到模型并检查了实体中的这个字段。它的“Nullable”设置为“(None)”,这是奇数。我本来以为它是真的。我将其设置为True,保存模型的更改,清理解决方案,并重建整个解决方案。当我运行应用程序时,我收到相同的错误。我似乎可以解决这个问题的唯一方法是将此字段设置为我的MVC控制器中的某个垃圾值。
在我的ViewModel中,此字段未传递给“创建”或“编辑”操作。
在我的EF项目中,此字段注释如下...请注意,它未设置为必需。
[Display(Name = "Title_Editor", ResourceType = typeof(Resources))]
[StringLength(200, ErrorMessageResourceName = "Error_200CharactersOrLess", ErrorMessageResourceType = typeof(Resources))]
public string Editor { get; set; }
我试图从模型中删除我的实体,清理解决方案,重新创建实体和POCO类,但这个问题仍然存在。
对我来说这看起来像是一个EF5RC错误......还有其他人遇到过吗?如何向EF开发团队报告?
谢谢,
麦克
的 的 ** * ** * ** * 的** 例外消息 * ** * ** * ** * * *
System.Data.Entity.Infrastructure.DbUpdateException was caught Message=An error occurred while updating the entries. See the inner exception for details. Source=EntityFramework StackTrace:
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
at ExpirationTrax.Domain.Repositories.EFCustomerRepository.Update(BaseCustomer customer) in C:\PROJECTS\ExpirationTraxMVC\ExpirationTrax.Domain\Repositories\EFCustomerRepository.cs:line 49 InnerException: System.Data.UpdateException
Message=An error occurred while updating the entries. See the inner exception for details.
Source=System.Data.Entity
StackTrace:
at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
at System.Data.Entity.Internal.InternalContext.SaveChanges()
InnerException: System.Data.SqlClient.SqlException
Message=Cannot insert the value NULL into column 'Editor', table '@T'; column does not allow nulls. INSERT fails. The statement has been terminated.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=16
LineNumber=42
Number=515
Procedure=CustomersHistoryTrigger
Server=DevPC\SqlExpress
State=2
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
InnerException: