C# .NET/Entity Framework-System.Data.UpdateException不够精确?
我参加了一个小型的.NET迁移项目,该项目使用实体框架和MS SQL Server 2005。当持久化不使用db模式的数据(例如字符串太长)时,我得到一个异常System.data.UpdateException,它表示“字符串或二进制数据将被截断”。但目前还没有相关信息。有人知道怎么得到这个吗 thx 这里是stacktrace:C# .NET/Entity Framework-System.Data.UpdateException不够精确?,c#,.net,sql-server,entity-framework,updateexception,C#,.net,Sql Server,Entity Framework,Updateexception,我参加了一个小型的.NET迁移项目,该项目使用实体框架和MS SQL Server 2005。当持久化不使用db模式的数据(例如字符串太长)时,我得到一个异常System.data.UpdateException,它表示“字符串或二进制数据将被截断”。但目前还没有相关信息。有人知道怎么得到这个吗 thx 这里是stacktrace: at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateMana
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.Objects.ObjectContext.SaveChanges()
at HAM.Inventory.Data.Repository.DocumentRepository.Save(Document document) in D:\ludewigg\Documents\Projects\HAM\src\VBS-HAM-Inventory\Main\HAM.Inventory.Data\Repository\DocumentRepository.cs:line 177
at HAM.Inventory.Business.Managers.DocumentManager.Save(Document document) in D:\ludewigg\Documents\Projects\HAM\src\VBS-HAM-Inventory\Main\HAM.Inventory.Business\Managers\DocumentManager.cs:line 75
at HAM.Inventory.MigrationClient.Common.Migration.SaveItem(ItemBase item) in D:\ludewigg\Documents\Projects\HAM\src\VBS-HAM-Inventory\Main\HAM.Inventory.MigrationClient\Common\Migration.cs:line 143
at HAM.Inventory.MigrationClient.Common.Migration.SaveAndClearItems(List`1 items) in D:\ludewigg\Documents\Projects\HAM\src\VBS-HAM-Inventory\Main\HAM.Inventory.MigrationClient\Common\Migration.cs:line 76
内部的例外是:
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)
查看
StateEntries
属性。它应该包含所有失败的对象。我知道的对象,但是哪个字段?@user524906:您必须查找该字段,并确保没有过长的字符串。@user524906:附加SQL探查器,这应该很容易发现。或者打开datacontext的日志。尚未尝试datacontext日志,但正在使用探查器。为了查看结果错误,我将查询从那里复制到SSMS。但是SSMS永远不会完成查询的执行!!奇怪的是,SSMS似乎无法处理“exec sp_executesql”语句……好了,非常感谢!你是对的,验证是最好的方法。无论如何,对于这种情况,我只是在寻找一种快速简单的方法来确定引发异常的字段/列。只是添加到post,但看不到任何内容