Плюсы и минусы тестирования различий по сравнению с прямым обновлением объекта [закрыто]C#

Место общения программистов C#
Anonymous
Плюсы и минусы тестирования различий по сравнению с прямым обновлением объекта [закрыто]

Сообщение Anonymous »

Я работаю над обновлением таблицы базы данных из внешнего источника с помощью Entity Framework Core для доступа к базе данных.
Таблица T_CAT выглядит следующим образом:

Код: Выделить всё

CAT_NAME varchar(20) Not Null,
CAT_FUR_COLOR varchar(30) Null,
CAT_FUR_PATTERN varchar(30) Null,
CAT_EYE_COLOR varchar(30) Null,
[...]
Соответствующий объект:

Код: Выделить всё

public class Cat
{
public string Name { get; set; }
public string FurColor { get; set; }
public string FurPattern { get; set; }
public string EyeColor { get; set; }
}
Для краткости я опускаю части, вызываемые OnModelCreating(), которые, среди прочего, указывают, что Name является обязательным и имеет максимальную длину 20.
Метод update считывает внешний источник в цикле, создавая объект Cat из считанных данных. Затем он обновляет базу данных в соответствии с существующими данными:

Код: Выделить всё

Cat existingCat = CurrentContext.CatRepository.FirstOrDefault(ca => ca.CatName == catObject.CatName);

if (existingCat is null)
{
CurrentContext.CatRepository.Add(catObject);
}
else
{
// Update database if needed
}
Я вижу два способа обновления. Очевидный способ выглядит так:

Код: Выделить всё

if (existingCat.CatName != catObject.CatName ||
existingCat.FurColor != catObject.FurColor ||
existingCat.FurPattern != catObject.FurPattern ||
existingCat.EyeColor != catObject.EyeColor
/* || [...] */ )
{
existingCat.CatName = catObject.CatName;
existingCat.FurColor = catObject.FurColor;
existingCat.FurPattern = catObject.FurPattern;
existingCat.EyeColor = catObject.EyeColor;
// [...]
}
Но в документации указано, что

Код: Выделить всё

existingCat.CatName = catObject.CatName;
existingCat.FurColor = catObject.FurColor;
existingCat.FurPattern = catObject.FurPattern;
existingCat.EyeColor = catObject.EyeColor;
// [...]
также будет работать нормально, если CurrentContext.SaveChanges() обновляет строку базы данных только в случае наличия различий.
Каковы плюсы и минусы любого подхода?

Вернуться в «C#»