我在更新数据库中的记录时遇到了一些问题。我有一个代码,它在数据库中添加数据
foreach (var todatabase in InitialAllWeights)
{
if (sd.stationSeasonNNcoefs.Count(e => e.Hours == todatabase.Hours && e.SeasonId == todatabase.SeasonId && e.StationId == todatabase.StationId) == 0)
{
sd.Add(todatabase);
}
else
{
}
}
sd.SaveChanges();
如果在数据库中我们没有初始计数,我们将添加当前数据。至于我的任务,如果计数为空,我需要添加数据,如果计数已满则更新数据,但如果已满,我必须只更新一列WeightsSeason
。
public class stationSeasonNNcoef
{
public int stationSeasonNNcoefID { get; set; }
public int StationId { get; set; }
public int SeasonId { get; set; }
public string WeightsSeason { get; set; }
public int Hours { get; set; }
}
另一列 ( SeasonId, StationId, Hours
) 必须保持不变。
如果这是您唯一标识要更新的潜在记录(或如果未找到则插入)的方式:
e.Hours == todatabase.Hours && e.SeasonId == todatabase.SeasonId && e.StationId == todatabase.StationId
然后首先尝试获取该记录。如果找到,请更新它。如果没有,请插入。也许是这样的:
var record = sd.stationSeasonNNcoefs.SingleOrDefault(e => e.Hours == todatabase.Hours && e.SeasonId == todatabase.SeasonId && e.StationId == todatabase.StationId);
if (record == null)
{
sd.Add(todatabase);
}
else
{
record.WeightsSeason = todatabase.WeightsSeason;
}
sd.SaveChanges();
调用SingleOrDefault
将返回一个匹配的记录,或者null
如果没有找到匹配的记录。(注意:如果找到多个,它会抛出异常。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句