0

ASP.NET MVC 4 を使用した Entity Framework 5RC

次のフィールドを含むテーブルがあります。

エディター nvarchar(200) nullable

アプリケーションで新しい EF モデルを生成し、モデルの図で [コード生成項目の追加...] を使用して POCO エンティティを生成しました。変更を保存し、ソリューションをクリーンアップして、ソリューション全体を再構築しました。アプリケーションを実行して、この種のエンティティを追加または編集しようとすると、EF5RC から次のように報告されます。

「列 'Editor'、テーブル '@T' に値 NULL を挿入できません。列は NULL を許可しません。INSERT は失敗します。ステートメントは終了しました。」

データベース テーブル フィールドは NULL 可能です。モデルに戻り、エンティティのこのフィールドを調べました。その "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