Структура сущности имеет синхронные и асинхронные версии тех же IO-связанных методов, как SaveChanges
и SaveChangesAsync
. Как я могу создавать новые методы, которые минимально выполняют одну и ту же задачу без «дублирования» кода?Как я могу легко поддерживать повторяющиеся методы async/sync?
public bool SaveChanges()
{
//Common code calling synchronous methods
context.Find(...);
//Synchronous Save
return context.SaveChanges();
}
public async Task<bool> SaveChangesAsync()
{
//Common code asynchronous methods
await context.FindAsync(...);
//Asynchronous Save
return await context.SaveChangesAsync();
}
Можно ли предположить, что EF выполняет это путем дублирования кода? – Shoe
@Shoe это * полностью возможно *, что EF выполняет это путем дублирования кода; Я не обязательно * предполагаю * это; однако, так как это, скорее всего, смесь кода-гене и мета-программирование, возможно, это хорошо (т. е. «сделано правильно»). –
Если бы у меня были методы cpu-bound, а не io-bound, правильным способом для этого было бы использовать что-то вроде 'Task.Run()'? – Shoe