实体框架7,MaxLength

时间:2016-04-22 15:47:01

标签: entity-framework asp.net5

我正在尝试在我的模型上为字符串属性设置MaxLength(ASP.Net 5,EF7)。

我可以毫无问题地应用迁移。但是,一旦在运行数据库更新' dnx ef数据库更新后创建了数据库,我设置了MaxLength(10)的模型在数据库中具有数据类型varchar(1)。

我已经检查过DBContext以及快照文件,该列有最大legnth 10。

我不确定为什么代码首先没有拿起MaxLength?

2 个答案:

答案 0 :(得分:1)

而不是MaxLength (10),请使用StringLength(10)

以前的EF版本仅使用

MaxLength进行代码优先迁移中的模式生成,而StringLength则同时用于迁移和客户端验证。

我无法告诉你为什么MaxLength它不适合你,EF Core在目前的开发阶段可能只是暂时考虑StringLength

答案 1 :(得分:0)

我发现了这个问题,我希望它也会帮助其他人。

事实证明,我在模型和dbcontext上都有数据注释。它必须在其中一个上。

我已经从dbcontext,'onModelCreating'方法中删除了所有数据注释,如IsRequired()和HasMaxLength,并且只在我的模型上使用它们。我已经为InitialSchema迁移更新了数据库,现在所有数据类型都是正确的。