0

带有 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:
4

0 回答 0