. NET Базовый код Первая ошибка на обнуляемом объекте - PullRequest
0 голосов
/ 10 января 2020

Это моя таблица журналов:

public class Logs
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int id { get; set; }
    public DateTime Date { get { return DateTime.Now; } }
    public string Controller { get; set; }
    public string Action { get; set; }
    public string Text { get; set; }
    public bool isError { 
        get {
            return this._isError.HasValue ? this._isError.Value : false;
        }
        set {
            this._isError = value;
            this.isError = value;
        } 
    }
    private bool? _isError = null;
}

, и я не знаю, почему, когда я пытаюсь сделать вставку, например:

var log = new Logs();
log.Action = "Send";
log.Controller = "Home";
log.Text = msg;
_context.logs.Add(log);

Я получаю эту ошибку:

System.InvalidOperationException: 'Обнуляемый объект должен иметь значение.'

И это объект:

log error

За исключением этой переменной private _isError, все столбцы базы данных имеют значение. Где ошибка?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 января 2020

Почему ваша частная собственность обнуляется, а ваша собственность c - нет?

Я бы удалил вашу частную собственность и изменил бы вашу собственность c:

public bool IsError { get; set; }

Так как вы никогда не собираетесь возвращать 'null', зачем вам делать это опцией?

Edit:

Я также думаю, что это приведет к бесконечному l oop вашего IsError устанавливаемое свойство:

set {
        this._isError = value;
        this.isError = value;
    } 

Вы устанавливаете свойство publi c в установщике свойств publi c. Здесь достаточно указать только частное свойство, так как вы возвращаете значение частного свойства в своем геттере.

Хотя это только примечание, я все равно удалил бы частное свойство и просто использовал

public bool IsError { get; set; }
...