2011-02-08 16 views
1

Entity FrameworkのSaveChanges()メソッドに問題があります。場合によっては正常に動作し、代わりにエラーメッセージが表示される場合があります。Entity FrameworkデータモデルのSaveChange()の問題

文字列またはバイナリのデータは、 になります。ステートメントは 終了しました。

いずれかが....これで

おかげで私を助けることができます。

+0

私はあなたにいくつかの情報をもっと与える必要があると思います。それはいつも同じタイプで起こりますか?クラス/モデルはどのように見えますか?データベース内の対応するテーブルはどのようなものですか?私はあなたが完全にそれを含むには小さすぎるフィールドに大きな値を挿入しようとしていると言いたいですが、より多くの情報が良いでしょう。 –

+0

その場合、データベースに定義されているフィールド長よりも短い入力(テキストボックス)があり、時間がかかることがあります。すべての入力を確認します - どのデータベース列にマップしますか?その列にはどのような最大長が定義されていますか? –

+0

.i私のフォームに同じデータを使用していました....時にはうまくいきませんでした。 –

答えて

0

デフォルトでは、すべての文字列はNVARCHAR(4000)として保存されます。文字列の長さが4000文字を超えると、このエラーが発生します。フィールド長を制限し、検証ロジックをモデルに追加するには、モデルプロパティでStringLength(... maxlen ...)属性(http://msdn.microsoft.com/en-US/library/system.componentmodel.dataannotations.stringlengthattribute.aspx)を使用します。

+0

返信用Kuvalda.Spb.Ruに感謝します...私のフォームに同じデータを使用しました....時にはそうではない –

+0

EFデバッグビジュアライザを使用しようとする - http://visualstudiogallery.msdn.microsoft.com/99468ece-689b-481c-868c-19e00e0a4e69/ –

0

あなたが挿入またはEFを更新するとき、あなたは価値のLENを確認することができます も 「NVARCHAR」とあなたは表 上の列のな長さを高める「VARCHARカラム」のデータベース表にこの問題を修正することができあなたはSaveChangesを()メソッド を呼び出し、あなたはEFはあなたに

とリンクの下を取得するドメイン・レイヤーまたはエンティティのGETとSET方法であなたの値をチェックするとき SQLプロファイラを使用してクエリをチェックすると便利です: EF Exception: String or binary data would be truncated. The statement has been terminated.?http://forums.asp.net/t/1660868.aspx/1

関連する問題