繁体   English   中英

使用实体框架核心更新数据库中的列

[英]Updating column in database using entity framework core

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

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 (注意:如果发现一个以上,它将引发异常。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM