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; }
}

我已手动将该字段设置为数据库BlogContent中的ntext类型(16 个字节)SQL CE4

但是,每次我尝试插入超过 4000 个字符的文本时,都会出现以下错误:

一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性

我已经尝试为 设置注释[Column(TypeName="ntext")],但这没有区别。当我通过集合循环时EntityValidationErrors,问题是由BlogContent错误引起的:

字符串不能超过 4000 个字符

如何定义我的模型以具有ntext字段BlogContent

似乎任何数据注释都被忽略了;假设MaxLength默认情况下,没有 no 的字符串限制为 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在数据库中创建一列,并让模型验证真正知道字符串长度可以超过 4000 个字符,我们必须使用这两项:

[Column(TypeName="ntext")]:这将告诉 Code-First 在数据库中生成一个 ntext 字段。

[MaxLength]:通过使用默认构造函数,它将获取数据库字段的最大长度,而不是猜测字符串的最大长度,即 4,000。如果缺少此信息或您明确设置了最大长度,例如[MaxLength(8000)],模型验证将引发错误,提示“字符串最大长度为 4,000 个字符”。

于 2011-06-18T04:17:55.403 回答