我在更新数据库中的记录时遇到一些问题。 我有一个代码,可以在DB中添加数据
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
)必须保持不变。
答案 0 :(得分:0)
如果这是您唯一确定要更新的潜在记录的方式(或在未找到的情况下插入):
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
。 (注意:如果发现一个以上,它将引发异常。)