Вставка и изменение строки в базе данных с помощью 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, для каждой таблицы своя. Возможно есть какое-то архитектурное решение?