我正在使用Entity Framework,并且尝试保存30个以上字符的密码时始终出现错误消息。
The field Password must be a string or array type with a maximum length of '30'
我不确定此设置在代码中的定义位置。数据库中的密码字段长度为100。 我还打开了.edmx文件,并将密码字段的最大长度更改为100,但是仍然出现此错误。
答案 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);
}
}