带有 ASP.NET MVC 4 的实体框架 5RC
我有一个表,其中包含以下字段:
编辑器 nvarchar(200) 可为空
我在我的应用程序中生成了一个新的 EF 模型,并使用模型图上的“添加代码生成项...”生成了 POCO 实体。我保存了更改,清理了我的解决方案,并重建了整个解决方案。当我运行我的应用程序并尝试添加或编辑这种实体时,EF5RC 报告说
“无法将值 NULL 插入到列 'Editor'、表 '@T';列不允许空值。INSERT 失败。语句已终止。”
数据库表字段可以为空。我回到模型并检查了实体中的这个字段。它的“Nullable”设置为“(None)”,这很奇怪。我本来希望它是真的。我将其设置为 True,保存模型的更改,清理解决方案并重建整个解决方案。当我运行应用程序时,我收到了同样的错误。我似乎可以解决这个问题的唯一方法是在我的 MVC 控制器中将此字段设置为一些垃圾值。
在我的 ViewModel 中,此字段未传递给 Create 或 Edit 操作。
在我的 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: