Невозможно вставить значение NULL в столбец «AttributeId», таблица «TableName»;столбец не допускает пустых значений.INSERT завершается неудачей.
Объект, который я передаю в EF Core для вставки новой записи в базу данных, выглядит следующим образом
public int Id { get; set; }
public string Value { get; set; }
public int AttributeId { get; set; }
public int CustomAttributeId { get; set; }
Я получаю новый экземпляр объектаи передать его в мой Db Context.Но он жалуется, что AttributeId не может быть нулевым, что имеет смысл.Но тип данных свойства - Int.Я не слишком уверен, почему EF Core интерпретирует значение как ноль.Я дошел до жесткого кодирования нуля, но он все еще жалуется.
Кто-нибудь сталкивался с подобной проблемой?Ошибка генерируется в UpsertAttribute ()
Обновление
Базовый уровень
Db.LineAttribute lineAttribute = new Db.LineAttribute()
{
Value = attribute.Value ?? "",
CustomAttributeId = attribute.Id,
};
if (attribute.Values.Count > 0 && String.IsNullOrEmpty(attribute.Value))
{
if (attribute.Values.Where(x => x.IsDefault == true && x.Id == -1).Count() == 1)
{
// Set default value
lineAttribute.Value = attribute
.Values
.FirstOrDefault(x => x.Id == -1)
.InternalValue;
}
else
{
// Set user selected default value
lineAttribute.Value = attribute
.Values
.FirstOrDefault(x => x.IsDefault = true)
.InternalValue;
}
}
lineAttribute = await _dataLayer.UpsertAttribute(lineAttribute);
Уровень данных
private readonly AppContext _db;
----------------
private async Task<lineAttribute> UpsertAttribute(lineAttribute attr)
{
_db.Entry(attr).State = attr.id <= 0 ? EntityState.Added : EntityState.Modified;
await _db.SaveChanges();
return attr;
}