.NET MVC:如何在SQL CE的Code-First中定义ntext字段?

Nes*_*tor 7 ntext code-first sql-server-ce

我有以下型号:

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; }
}
Run Code Online (Sandbox Code Playgroud)

我已手动将字段设置为数据库中BlogContentntext类型(16字节)SQL CE4.

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

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

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

字符串不能超过4000个字符

如何定义我的模型以获得ntext字段BlogContent

似乎忽略了任何数据注释; 假设MaxLength默认情况下,no的字符串限制为4000个字符.

Nes*_*tor 21

我已经解决了,你需要使用:

[Column(TypeName="ntext")]
[MaxLength]
public string BlogContent { get; set; }
Run Code Online (Sandbox Code Playgroud)

详情请见:http: //www.cloudonedesign.com/Blog/Post/how-to-define-ntext-fields-using-code-first-in-net-30

为了ntext在数据库中创建一个列,并允许模型验证实际知道字符串长度可以超过4,000个字符,我们必须使用这两个项:

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

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