实体框架5发布候选:未正确处理可空字段

时间:2012-08-23 21:02:53

标签: frameworks entity entity-framework-5

使用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:

0 个答案:

没有答案