2016-03-29 13 views
2

EFを使用してデータベースを操作するASP.NET MVCアプリケーションで作業しています。 StringLength(1000)属性を持つ1つの文字列プロパティを変更する必要があり、データベースのnvarchar(1000)列にマップされました。データベースを更新してモデルを変更した後のエンティティフレームワークの検証エラー

nvarchar(max)を最近のrequierementsのために使用し、モデルクラスからStringLength(1000)属性を削除しました。

問題があります。 1000を超える長さのこのプロパティを持つ新しいエンティティを挿入するたびに、検証エラーが発生し、1000文字しか入力できないというエラーが表示されます。それが低くなると、すべてが期待通りに機能します。

フィールドは、最大長が '1000'の文字列または配列タイプである必要があります。

このエラーはどこから来たのかわかりません。トリガーやストアドプロシージャはありません。私も属性MaxLengthまたはStringLenght(int.maxInt)を使用しようとしましたが、エラーが発生しました。 Fluent APIの追加構成もありません。

EDIT:残念ながら、ソリューションを再構築しないとダムの問題に見えません。私は今2回それを試しました(+クリーンアップ)、問題は解決しません。

解決策:何らかの理由で、内部的に使用されているプロジェクト内の同じエンティティの別のモデルクラスがあります。そのプロパティには完全に単一の属性はありませんでした。その単一のプロパティにMaxLengthを追加した後で動作します。

+3

を参照してください、あなたはちょうどあなたの実行アセンブリの古いDLLを使用していませんか? –

+1

あなたは解決策を洗い直して再構築していないので、古くなったDLLを使用しているか、または別の場所で 'StringLength(1000)'が定義されています。 – user1666620

+1

これをチェックしてください。これがあなたに役立つかもしれません。 http://stackoverflow.com/questions/5414611/entity-framework-validation-confusion-maximum-string-length-of-128 –

答えて

1

データベースを再生成できない場合、解決策は、部分クラスを実装し、フィールドにカスタム検証を使用することです。それほどきれいではありませんが、うまくいくはずです。

注:すでにこのような場合には部分クラス彼らのかもしれ

this MSDN Article

関連する問題