C# 可空对象上的.NET核心代码第一个错误
这是我的日志表:C# 可空对象上的.NET核心代码第一个错误,c#,.net,ef-code-first,core,C#,.net,Ef Code First,Core,这是我的日志表: 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 Ac
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:“可为null的对象必须有一个值。”
这就是目标:
除了private\u isError
变量外,所有数据库列都有一个值。
错误在哪里
提前谢谢 为什么您的私有财产可以为空而您的公共财产不能为空 我会移除您的私人财产,然后更改您的公共财产:
public bool IsError { get; set; }
既然无论如何都不会返回“null”,为什么要选择它呢
编辑:
我还认为这将导致设置iError属性的无止境循环:
set {
this._isError = value;
this.isError = value;
}
您正在公共属性设置器中设置公共属性。
只在这里设置私有属性就足够了,因为您在getter中返回私有属性的值
不过,这只是一个旁注,我仍然会移除私有财产并使用它
public bool IsError { get; set; }
旁注:
isError
的setter中存在StackOverflowException。请共享您的上下文配置,请=)确保您没有所需的属性。谢谢您的回答。那么,添加默认值的最佳方法是什么?