簡體   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