Вставка и изменение строки в базе данных с помощью EntityFramework

У меня есть метод, который принимает вью-модель и вставляет новую строку или изменяет старую в таблице и возвращает Guid как на примере:

public async Task<Guid> SaveData(ViewModel model)
{
    bool isNew = model.Id == null;
    var dbEntity = isNew ? new DbEntity() : await DB.Table.SingleOrDefaultAsync(t => t.Id == model.Id);

    if (isNew)
        dbEntity.Id = new Guid();

    dbEntity.CreateDate = isNew ? new DateTime() : dbEntity.CreateDate;
    dbEntity.ModifyDate = new DateTime();
    dbEntity.value1 = model.value1;
    dbEntity.value2 = model.value2;
    dbEntity.value3 = model.value3;
    dbEntity.value4 = model.value4;
    dbEntity.value5 = model.value5;

    if (isNew)
       DB.Table.Add(dbEntity);

    await DB.SaveChangesAsync();

    return dbEntity.Id;
}

Можно ли как-то переписать его чтобы избежать повторяющихся похожих строк? Таких методов надо много, да и столбцов в таблицах тоже не мало, иногда присутствует некая логика по переводу из ViewModel в Entity, для каждой таблицы своя. Возможно есть какое-то архитектурное решение?


Ответы (0 шт):