密码字段必须是最大长度为“ 30”的字符串或数组类型

时间:2018-10-14 10:47:30

标签: asp.net-mvc entity-framework

我正在使用Entity Framework,并且尝试保存30个以上字符的密码时始终出现错误消息。

The field Password must be a string or array type with a maximum length of '30'

我不确定此设置在代码中的定义位置。数据库中的密码字段长度为100。 我还打开了.edmx文件,并将密码字段的最大长度更改为100,但是仍然出现此错误。

1 个答案:

答案 0 :(得分:2)

如果您未指定字符串的长度,则DbContext将采用默认长度。

您可以使用类中的属性或使用流畅的API来指定字符串的最大长度。后一种方法的好处是,您可以将您的类用于具有不同字符串长度,小数精度等的不同数据库。此外,您的代码看起来更加清晰。

class LogInData
{
     ...
     public string Password {get; set;}
}

class MyDbcontext : DbContext
{
    public DbSet<LoginData> LoginDatas{get; set;}

    protected override OnModelCreating(...)
    {
        // the rows in the table with LoginData, have a property Password
        // specify the length of this property
        modelBuilder.Entity<LoginData>()
           .Property(loginData => loginData.Password)
           .HasMaxLength(100);
    }
}