首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF6 ValidationErrors on string.empty

EF6 ValidationErrors on string.empty
EN

Stack Overflow用户
提问于 2015-09-04 16:05:44
回答 2查看 1.4K关注 0票数 1

我有一个配置文件类,我试图将它保存到数据库(MS )。在数据库中,字段被列为‘NULL’。默认/初始条目将是空字符串(string.empty)。

我认为空字符串不会对NULL失败,但是EF似乎试图将它们作为NULL传递。是这样吗?

下面是一些模型类:

代码语言:javascript
复制
[Required]
public string Password { get; set; }

public string PasswordSalt { get; set; }

[Required]
[Display(Name = "Security Question")]
public string SecurityQuestion { get; set; }

[Required]
[Display(Name = "Security Answer")]
public string SecurityAnswer { get; set; }

这就是模型。下面是试图设置数据的代码,使用r作为DataRow:

代码语言:javascript
复制
newProfile = new Profile
{
    Salutation = r["Salutation"].ToString(),
    FirstName = r["FirstName"].ToString(),
    MiddleName = r["MiddleName"].ToString(),
    LastName = r["LastName"].ToString(),
    Biography = r["Biography"].ToString(),
    Password = string.Empty,
    PasswordSalt = string.Empty,
    SecurityQuestion = string.Empty,
    SecurityAnswer = string.Empty,
    EnteredDate = DateTime.Now,
    LastUpdatedDate = DateTime.Now,
    RecordVersion = StaticTools.RecordVersion(),
};

_db.Profile.Add(newProfile);
try
{
    _db.SaveChanges();
}
catch (Exception ex)
{
    throw ex;
}

因此,当我们尝试SaveChanges()时,它在DbValidationError、密码、SecurityQuestion、SecurityAnswer中失败。

“安全问题字段是必需的。”

(当然,我们甚至不会为登录检查一个空密码,用户将不得不跟随一封注册电子邮件并设置一个。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-04 16:20:31

默认情况下,RequiredAttribute不允许空字符串。可以通过将AllowEmptyStrings属性设置为true来重写此行为。

代码语言:javascript
复制
[Required(AllowEmptyStrings = true)]
public string Password { get; set; }

public string PasswordSalt { get; set; }

[Required(AllowEmptyStrings = true)]
[Display(Name = "Security Question")]
public string SecurityQuestion { get; set; }

[Required(AllowEmptyStrings = true)]
[Display(Name = "Security Answer")]
public string SecurityAnswer { get; set; }
票数 2
EN

Stack Overflow用户

发布于 2015-09-04 16:18:55

您的安全问题/答案属性上有“必需”标记。必需不需要为空字符串才能通过所需的检查。

删除[Required]标记,这将缓解您当前的问题。

来自RequiredAttribute

RequiredAttribute属性指定在验证窗体上的字段时,该字段必须包含一个值。如果属性为null、包含空字符串("")或仅包含空白字符,则会引发验证异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32402280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档