【发布时间】:2021-10-31 15:03:47
【问题描述】:
我正在接受来自用户的 3 个字段。所有 3 个字段都必须输入。看看下面的实体配置——EntityConfiguration 中的所有 3 个字段都被标记为Required。
当我将新记录保存到数据库时,这非常有效。但是,现在我需要更新一个条目。在这种情况下,如果我只想更新UserName 和Password - 会抛出异常,因为Age 不能是Null。我该如何解决这个问题?
InnerException = {"Cannot insert the value NULL into column 'Age', table 'DBFFFF.dbo.Users'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."}
代码
public class User
{
public int Id{ get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Age { get; set; }
}
public class UserEntityConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.ToTable("Users");
builder.HasKey(c => c.Id);
builder.Property(c => c.UserName)
.IsRequired(true);
builder.Property(c => c.Password )
.IsRequired(true);
builder.Property(c => c.Age )
.IsRequired(true);
}
}
public async Task<string> UpdateUs(User u)
{
_dbCont.Update(u);
await _dbCont.SaveChangesAsync();
return "ok";
}
【问题讨论】:
-
如何更新实体?该代码比配置更相关
-
我已经更新了我的代码。请看一下
-
这不是问题,你发送什么,EF 会更新它。我的意思是您将此值作为空值发送,并且它知道您想将此字段更新为空值,我认为这是一个正常的过程。
-
builder.Property(c => c.Password )-- 不要将用户的密码存储为明文!!!!!您必须对它们进行哈希和加盐。 -
@Dai 是的。它是盐渍和散列的。
标签: c# .net-core entity-framework-core