ASP.Net 核心不断抱怨 'Database operation expected to affect 1 row(s) but actually affected 0 row(s)'
ASP.Net core keeps complaining 'Database operation expected to affect 1 row(s) but actually affected 0 row(s)'
我遇到了上述错误,不知道该怎么办。
您可以假设表格已经正确设置。
这是问题代码:
var setting = _context.Settings.FirstOrDefault();
ICollection<PD_Datafile> PD_Datafiles = new Collection<PD_Datafile>();
for (int i = 0; i < numfiles; i++)
{
DAT_FILE PD_Datafile = ParseFileName(files[i].Name, filepath);
string databodystr = Encoding.Default.GetString(PD_Datafile.SensorData.DataBody);
PD_Datafiles.Add(new PD_Datafile() { DataId = i, FullName = files[i].Name, DataBody = databodystr });
}
setting.PD_Datafiles = PD_Datafiles;
ICollection<Alarm> alarms = new Collection<Alarm>();
alarms.Add(new Alarm() { AlarmId = 0, DateOccurred = 20210120, EquipmentType = "GISPD", FaultType = "PD Happening", Sensor = null, Details = "None" });
alarms.Add(new Alarm() { AlarmId = 1, DateOccurred = 20210121, EquipmentType = "CBCM", FaultType = "Warning", Sensor = null, Details = "None" });
alarms.Add(new Alarm() { AlarmId = 2, DateOccurred = 20210122, EquipmentType = "DGA", FaultType = "Danger", Sensor = null, Details = "None" });
alarms.Add(new Alarm() { AlarmId = 3, DateOccurred = 20210123, EquipmentType = "OLTC", FaultType = "Danger", Sensor = null, Details = "None" });
setting.Alarms = alarms;
_context.Settings.Update(setting);
_context.SaveChanges();
当“_context”保存更改时,它一直说“'数据库操作预计会影响 1 行但实际上影响了 0 行。自加载实体以来数据可能已被修改或删除。”
经过一些谷歌搜索,我也在每个表的主键上方添加了这个符号。
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
我想我添加列表的方式不对。
这是我正在使用的表格:
namespace OA2.Model
{
public class Alarm
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AlarmId { get; set; }
public string FaultType { get; set; }
public int DateOccurred { get; set; }
public Sensor Sensor { get; set; }
public string EquipmentType { get; set; }
public string Details { get; set; }
[ForeignKey("SettingId")]
public virtual Setting Setting { get; set; }
}
}
namespace OA2.Model
{
public partial class Setting
{
public Setting()
{
PD_Datafiles = new HashSet<PD_Datafile>();
SCBR_Datafiles = new HashSet<SCBR_Datafile>();
Alarms = new HashSet<Alarm>();
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SettingId { get; set; }
public int EventAmpTh1 { get; set; }
public int EventPpsTh1 { get; set; }
public int EventAmpTh2 { get; set; }
public int EventPpsTh2 { get; set; }
public int PulselvlTh { get; set; }
public long TimePassed { get; set; }
public string FilePath { get; set; }
//public virtual PD_Datafile Data { get; set; }
public virtual ICollection<PD_Datafile> PD_Datafiles { get; set; }
public virtual ICollection<SCBR_Datafile> SCBR_Datafiles { get; set; }
public virtual ICollection<Alarm> Alarms { get; set; }
}
}
提前感谢您的帮助!
我认为警报有问题 table。报警ID是身份,所以你不需要添加报警ID
和
第二件事是你同时修改两个 tables 可能是这个 give exception.
看看:
[密钥,数据库生成(DatabaseGeneratedOption.Identity)]
public int AlarmId { 得到;放; }
表示数据库会生成AlarmId,所以新建对象Alarm对象时不需要赋值AlarmId。
让我们删除 AlarmId = 0、AlarmId = 1 等...
我遇到了上述错误,不知道该怎么办。
您可以假设表格已经正确设置。 这是问题代码:
var setting = _context.Settings.FirstOrDefault();
ICollection<PD_Datafile> PD_Datafiles = new Collection<PD_Datafile>();
for (int i = 0; i < numfiles; i++)
{
DAT_FILE PD_Datafile = ParseFileName(files[i].Name, filepath);
string databodystr = Encoding.Default.GetString(PD_Datafile.SensorData.DataBody);
PD_Datafiles.Add(new PD_Datafile() { DataId = i, FullName = files[i].Name, DataBody = databodystr });
}
setting.PD_Datafiles = PD_Datafiles;
ICollection<Alarm> alarms = new Collection<Alarm>();
alarms.Add(new Alarm() { AlarmId = 0, DateOccurred = 20210120, EquipmentType = "GISPD", FaultType = "PD Happening", Sensor = null, Details = "None" });
alarms.Add(new Alarm() { AlarmId = 1, DateOccurred = 20210121, EquipmentType = "CBCM", FaultType = "Warning", Sensor = null, Details = "None" });
alarms.Add(new Alarm() { AlarmId = 2, DateOccurred = 20210122, EquipmentType = "DGA", FaultType = "Danger", Sensor = null, Details = "None" });
alarms.Add(new Alarm() { AlarmId = 3, DateOccurred = 20210123, EquipmentType = "OLTC", FaultType = "Danger", Sensor = null, Details = "None" });
setting.Alarms = alarms;
_context.Settings.Update(setting);
_context.SaveChanges();
当“_context”保存更改时,它一直说“'数据库操作预计会影响 1 行但实际上影响了 0 行。自加载实体以来数据可能已被修改或删除。”
经过一些谷歌搜索,我也在每个表的主键上方添加了这个符号。
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
我想我添加列表的方式不对。
这是我正在使用的表格:
namespace OA2.Model
{
public class Alarm
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AlarmId { get; set; }
public string FaultType { get; set; }
public int DateOccurred { get; set; }
public Sensor Sensor { get; set; }
public string EquipmentType { get; set; }
public string Details { get; set; }
[ForeignKey("SettingId")]
public virtual Setting Setting { get; set; }
}
}
namespace OA2.Model
{
public partial class Setting
{
public Setting()
{
PD_Datafiles = new HashSet<PD_Datafile>();
SCBR_Datafiles = new HashSet<SCBR_Datafile>();
Alarms = new HashSet<Alarm>();
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SettingId { get; set; }
public int EventAmpTh1 { get; set; }
public int EventPpsTh1 { get; set; }
public int EventAmpTh2 { get; set; }
public int EventPpsTh2 { get; set; }
public int PulselvlTh { get; set; }
public long TimePassed { get; set; }
public string FilePath { get; set; }
//public virtual PD_Datafile Data { get; set; }
public virtual ICollection<PD_Datafile> PD_Datafiles { get; set; }
public virtual ICollection<SCBR_Datafile> SCBR_Datafiles { get; set; }
public virtual ICollection<Alarm> Alarms { get; set; }
}
}
提前感谢您的帮助!
我认为警报有问题 table。报警ID是身份,所以你不需要添加报警ID 和 第二件事是你同时修改两个 tables 可能是这个 give exception.
看看: [密钥,数据库生成(DatabaseGeneratedOption.Identity)] public int AlarmId { 得到;放; }
表示数据库会生成AlarmId,所以新建对象Alarm对象时不需要赋值AlarmId。
让我们删除 AlarmId = 0、AlarmId = 1 等...