【问题标题】:Updating column in database using entity framework core使用实体框架核心更新数据库中的列
【发布时间】:2019-03-03 14:30:03
【问题描述】:

我在更新数据库中的记录时遇到了一些问题。 我有一个代码,在数据库中添加数据

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) 必须保持不变。

【问题讨论】:

    标签: c# database entity-framework


    【解决方案1】:

    如果这是您唯一标识要更新的潜在记录(如果未找到则插入)的方式:

    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。 (注意:如果找到多个,它会抛出异常。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多