Sql server ASP.NET MVC2 Guid持久性问题

Sql server ASP.NET MVC2 Guid持久性问题,sql-server,entity-framework,asp.net-mvc-2,Sql Server,Entity Framework,Asp.net Mvc 2,我在.NET 4.0上有一个ASP.NET MVC2应用程序,使用VS 2010构建,该应用程序有两个表(除其他表外),一个employees表,其中包含以下列: Firstname、MiddleName、LastName、NationalID、EmployeeType、MobileEnumber、电子邮件和用户名 userId字段是来自aspnet\u users表的外键,恰好是guid。我正在尝试保留所选用户的员工详细信息,但由于出现错误而无法这样做 可以使用ViewData字典提取并显示选

我在.NET 4.0上有一个ASP.NET MVC2应用程序,使用VS 2010构建,该应用程序有两个表(除其他表外),一个
employees
表,其中包含以下列: Firstname、MiddleName、LastName、NationalID、EmployeeType、MobileEnumber、电子邮件和用户名

userId
字段是来自
aspnet\u users
表的外键,恰好是guid。我正在尝试保留所选用户的员工详细信息,但由于出现错误而无法这样做

可以使用ViewData字典提取并显示选定用户的guid值。
userId
guid值为
23aa8cd9-7552-403c-8c99-fcdd611cb188

我希望将此值与其他员工属性一起保留,但当我提交表单时,会出现如下所示的错误。 我的模型也使用EF4。这是stacktrace:

System.Data.UpdateException was unhandled by user code
  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.Objects.ObjectContext.SaveChanges()
       at TechDispatch.Models.EmployeeRepository.SaveChanges() in C:\Projects\TechDispatch\TechDispatch\Models\EmployeeRepository.cs:line 131
       at TechDispatch.Models.EmployeeRepository.AddNewEmployee(Employee Add) in C:\Projects\TechDispatch\TechDispatch\Models\EmployeeRepository.cs:line 127
       at TechDispatch.Controllers.EmployeeController.Create(Employee employee) in C:\Projects\TechDispatch\TechDispatch\Controllers\EmployeeController.cs:line 69
       at lambda_method(Closure , ControllerBase , Object[] )
       at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
  InnerException: System.Data.SqlClient.SqlException
       Message=String or binary data would be truncated.
The statement has been terminated.
       Source=.Net SqlClient Data Provider
       ErrorCode=-2146232060
       Class=16
       LineNumber=1
       Number=8152
       Procedure=""
       Server=.
       State=13
       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.SqlDataReader.ConsumeMetaData()
            at System.Data.SqlClient.SqlDataReader.get_MetaData()
            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.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
            at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
            at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
            at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
            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:
System.Data.UpdateException未由用户代码处理
消息=更新条目时出错。有关详细信息,请参见内部异常。
Source=System.Data.Entity
堆栈跟踪:
位于System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntITYAAdapter适配器)
位于System.Data.EntityClient.EntityAdapter.Update(EntityStateManager entityCache)
位于System.Data.Objects.ObjectContext.SaveChanges(保存选项)
位于System.Data.Objects.ObjectContext.SaveChanges()处
在C:\Projects\TechDispatch\TechDispatch\Models\EmployeeRepository.cs中的TechDispatch.Models.EmployeeRepository.SaveChanges()处:第131行
在C:\Projects\TechDispatch\TechDispatch\Models\EmployeeRepository.cs中的TechDispatch.Models.EmployeeRepository.AddNewEmployee(员工添加)处:第127行
在C:\Projects\TechDispatch\TechDispatch\Controllers\EmployeeController.cs中的TechDispatch.Controllers.EmployeeController.Create(Employee-Employee)中创建(Employee-Employee):第69行
在lambda_方法中(闭包、控制器基、对象[])
位于System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object[]参数)
位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数)
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数)
在System.Web.Mvc.ControllerActionInvoker.c_uudisplayClassD.b_uua()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter筛选器、ActionExecutingContext预文本、Func`1 continuation)
InnerException:System.Data.SqlClient.SqlException
Message=字符串或二进制数据将被截断。
声明已终止。
Source=.Net SqlClient数据提供程序
错误代码=-2146232060
等级=16
行号=1
数字=8152
Procedure=“”
服务器=。
州=13
堆栈跟踪:
位于System.Data.SqlClient.SqlConnection.OneError(SqlException异常,布尔断开连接)
位于System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常,布尔断开连接)
位于System.Data.SqlClient.TdsParser.throweexception和warning()处
在System.Data.SqlClient.TdsParser.Run(RunBehavior RunBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)
位于System.Data.SqlClient.SqlDataReader.ConsumerMetadata()处
在System.Data.SqlClient.SqlDataReader.get_MetaData()处
位于System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior、String ResetOptions String)
位于System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、Boolean async)
位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法、DbAsyncResult)
位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法)
位于System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior,String方法)
位于System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior)
位于System.Data.Common.DbCommand.ExecuteReader(CommandBehavior)
在System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator转换器、EntityConnection连接、Dictionary`2 identifierValues、List`1 generatedValues)
位于System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntITYAAdapter适配器)
内部异常:

有人能帮忙吗?

对我来说,此消息意味着您添加的字符串对于您的char/varchar字段之一来说太长:

String or binary data would be truncated. The statement has been terminated. 字符串或二进制数据将被截断。 声明已终止。
在这里,我同意你的观点,我不认为我提供的任何东西比我设定的所有varchar字段都要大。我也有验证,所以我会知道之前张贴。这个消息怎么样:Dictionary
2个identifierValues,List
1个generatedvalues不知道那行是什么意思。如果您在本地计算机上或在您有SA访问权限的计算机上运行,您应该能够运行SQL Profiler以查看引发错误的确切查询。@imdondo:您可以随意说,但您有字段长度或字段类型问题。您正试图在不适合内容的列中存储某些内容。它可以是ID(在SQL中应该是uniqueidentifier,在类中应该是Guid)或其他内容。可能是您的某个地方有空白,但没有看到。@imdondo-如果您的guid字段有问题,您将得到“转换fai”