我有这个代码:
foreach (ContactImportRequest row in toImport)
{
Contact contact = _mapper.Map<Contact>(row);
//if first or last names are null, we fill them with anything because are required fields
if (contact.FirstName == null || contact.FirstName.Equals("") || contact.FirstName == String.Empty)
contact.FirstName = "FirstName";
if (contact.LastName == null || contact.LastName.Equals("") || contact.LastName == String.Empty)
contact.LastName = "LastName";
contacts.Add(contact);
}
await _context.Contacts.AddRangeAsync(contacts);
await _context.SaveChangesAsync();
并且“SaveChangesAsync”中断并出现以下错误:
Microsoft.EntityFrameworkCore.DbUpdateException:发生错误 同时保存实体更改。有关详细信息,请参阅内部异常。 ---> Npgsql.PostgresException (0x80004005): 23502: 关系“Users”的“FirstName”列中的空值违反了非空约束
我已经调试过,没有与带有空值的名字联系,以防万一我添加了这两个“if”来检查名字或姓氏是否为空,在这些情况下设置一个固定值。 另外,调试时,“联系人”列表中没有名字为 null 的联系人。
首先,你可以用以下方式替换很多检查:
if (string.IsNullOrEmpty(contact.FirstName))
{
contact.FirstName = "FirstName";
}
其次,错误似乎与
Users
关系有关,而不是与 Contacts
表有关。我假设您的 Contacts
表在数据库中不名为 Users
,但您可能想要检查关系而不是这个特定函数。