Обновление столбца в базе данных с использованием ядра Entity Framework - PullRequest
0 голосов
/ 03 марта 2019

У меня проблемы с обновлением записей в базе данных.У меня есть код, который добавляет данные в БД

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) должен остаться без изменений.

1 Ответ

0 голосов
/ 03 марта 2019

Если именно так вы однозначно определяете потенциальную запись для обновления (или вставляете, если она не найдена):

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, если подходящая запись не найдена.(Примечание: если будет найдено более одного, будет сгенерировано исключение.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...