7

私は次のモデルを持っています:

public class Blog
{
    public int BlogID { get; set; }
    public int CategoryID { get; set; }

    [MaxLength(70)]
    [Required]
    public string BlogTitle { get; set; }

    [Column(TypeName="ntext")]
    public string BlogContent { get; set; }
}

データベースでフィールドBlogContentntextタイプ (16 バイト)を手動で設定しました。SQL CE4

ただし、4000 文字を超えるテキストを挿入しようとするたびに、次のエラーが発生します。

1 つ以上のエンティティの検証に失敗しました。詳細については、「EntityValidationErrors」プロパティを参照してください

の注釈を設定しようとしました[Column(TypeName="ntext")]が、これは違いはありません。EntityValidationErrorsコレクションをループすると、問題が発生しBlogContent、次のエラーが表示されます。

文字列は 4000 文字を超えることはできません

ntextのフィールドを持つようにモデルを定義するにはどうすればよいBlogContentですか?

データ注釈は無視されているようです。MaxLengthno を含む文字列は、デフォルトで 4000 文字に制限されていると想定しています。

4

1 に答える 1

21

私はそれを解決しました、あなたは使用する必要があります:

[Column(TypeName="ntext")]
[MaxLength]
public string BlogContent { get; set; }

詳細はこちら: http://www.cloudonedesign.com/Blog/Post/how-to-define-ntext-fields-using-code-first-in-net-30

データベースに列を作成し、ntextモデルの検証で文字列の長さが 4,000 文字を超える可能性があることを実際に認識できるようにするには、次の 2 つの項目を使用する必要があります。

[Column(TypeName="ntext")]: これにより、データベースに ntext フィールドを生成するように Code-First に指示されます。

[MaxLength]: デフォルトのコンストラクターを使用すると、文字列の最大長である 4,000 を推測する代わりに、データベース フィールドの最大長を取得します。これがない場合、または などの最大長を明示的に設定した場合[MaxLength(8000)]、モデルの検証で「文字列の最大長は 4,000 文字です」というエラーが発生します。

于 2011-06-18T04:17:55.403 に答える