关系列中的空值违反了非空约束.net EF

问题描述 投票:0回答:1

我有这个代码:

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 的联系人。

c# .net postgresql entity-framework entity-framework-core
1个回答
0
投票

首先,你可以用以下方式替换很多检查:

if (string.IsNullOrEmpty(contact.FirstName)) 
{
    contact.FirstName = "FirstName";
}

其次,错误似乎与

Users
关系有关,而不是与
Contacts
表有关。我假设您的
Contacts
表在数据库中不名为
Users
,但您可能想要检查关系而不是这个特定函数。

© www.soinside.com 2019 - 2024. All rights reserved.