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