2011-01-30 11 views
0

.NET 4.0でASP.NET MVC2アプリケーションを使用していて、2つのテーブル(他のものの中でも)employeesテーブルのあるテーブルを使用して作成しました。 Firstname、MiddleName、 LastName、NationalID、EmployeeType、MobileNumber、Email、およびUserIdが含まれます。ASP.NET MVC2 Guid永続性の問題

フィールドは、aspnet_usersテーブルからの外部キーで、guidになります。選択したユーザーの従業員の詳細を保持しようとしていますが、エラーが発生しているため、従業員の詳細を維持できません。

選択したユーザーの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

私には、このメッセージはあなたのchar/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