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