我正在尝试在我的模型上为字符串属性设置MaxLength(ASP.Net 5,EF7)。
我可以毫无问题地应用迁移。但是,一旦在运行数据库更新' dnx ef数据库更新后创建了数据库,我设置了MaxLength(10)的模型在数据库中具有数据类型varchar(1)。
我已经检查过DBContext以及快照文件,该列有最大legnth 10。
我不确定为什么代码首先没有拿起MaxLength?
答案 0 :(得分:1)
而不是MaxLength (10)
,请使用StringLength(10)
。
MaxLength
进行代码优先迁移中的模式生成,而StringLength则同时用于迁移和客户端验证。
我无法告诉你为什么MaxLength
它不适合你,EF Core在目前的开发阶段可能只是暂时考虑StringLength
。
答案 1 :(得分:0)
我发现了这个问题,我希望它也会帮助其他人。
事实证明,我在模型和dbcontext上都有数据注释。它必须在其中一个上。
我已经从dbcontext,'onModelCreating'方法中删除了所有数据注释,如IsRequired()和HasMaxLength,并且只在我的模型上使用它们。我已经为InitialSchema迁移更新了数据库,现在所有数据类型都是正确的。