2011-01-30 2 views
0

.NET 4.0에서 ASP.NET MVC2 응용 프로그램을 사용하고 다른 테이블에 두 테이블이있는 employees 테이블 ( 이름, 중간 이름, LastName, NationalID, EmployeeType, MobileNumber, Email 및 UserId입니다.ASP.NET MVC2 Guid 영속성 문제

userId 필드는 GUID 일 수있는 aspnet_users 테이블의 외래 키입니다. 선택한 사용자에 대한 직원 세부 정보를 유지하려고하지만 오류가 발생하면 그렇게 할 수 없습니다.

선택한 사용자의 guid 값을 추출하고 ViewData 사전을 사용하여 표시 할 수 있습니다. userId GUID 값은 23aa8cd9-7552-403c-8c99-fcdd611cb188입니다.

다른 직원 속성과 함께이 값을 유지하고 싶습니다. 그러나 양식을 제출할 때 아래 오류가 나타납니다. 내 모델에도 EF4를 사용하고 있습니다. 스택 트레이스는 다음과 같습니다.

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: 

아무도 도와 줄 수 없습니까? 나에게

+0

이 가장 가능성이 오류 ASP.NET 또는 MVC와는 아무 상관이있다. 그것은 엔티티 프레임 워크/SQL과 관련이 있습니다. 나는 그 분야에 대한 지식을 가진 독자를 끌어 들이기 위해 질문의 표제를 바꾸라고 예언한다. 어쨌든 어떤 데이터베이스를 사용하고 있습니까? 당신은 그것을 언급하지 않습니다. – Codo

답변

2

이 메시지는 당신이 당신의 문자/VARCHAR 필드 중 하나 너무 긴 문자열을 추가하는 것을 의미한다 :

 
    String or binary data would be truncated. 
    The statement has been terminated. 
+0

내가 거기에서 당신과 동의 할 수있는만큼 나는 내가 나의 모든 varchar 들판을 세우는 것보다 더 큰 것을 공급한다고 생각하지 않는다. 또한 게시 전에 알 수 있도록 유효성을 확인했습니다. 이 메시지는 어떨까요 : Dictionary'2 identifierValues, List'1 generatedValues ​​ – imdondo

+0

그 행의 의미를 모릅니다. 로컬 컴퓨터 또는 SA 액세스 권한이있는 컴퓨터에서 실행중인 경우 SQL 프로필러를 실행하여 오류를 발생시키는 정확한 쿼리를 볼 수 있어야합니다. – anon

+0

@imdondo : 원하는 것은 무엇이든간에 말하지만 필드 길이 나 필드 유형 문제가 있습니다. 내용에 맞지 않는 항목에 항목을 저장하려고합니다. 그것은 ID (클래스의 SQL 및 Guid의 uniqueidentifier 여야 함) 또는 다른 것일 수 있습니다. 어딘가에 공백이있을 수도 있고 보지 못했을 수도 있습니다. – mare