В настоящее время я изменяю синхронную реализацию на асинхронную реализацию. Я обновил и определил следующий интерфейс:
public interface IMGP1DFC
{
// get all
Task<IEnumerable<MGP1DFC>> GetAllAsync();
// get single
Task<MGP1DFC> GetSingleAsync(int id);
// add
void Add(MGP1DFC mgp1dfc);
// update
void Update(MGP1DFC mgp1dfc);
// delete
void Delete(MGP1DFC mgp1dfc);
// save
Task SaveAsync();
}
У меня есть служба, реализованная и определенная с использованием этого интерфейса, который подключается к базе данных следующим образом:
public class MGP1DFCData : IMGP1DFC
{
private ApplicationDbContext _applicationDbContext;
//
public MGP1DFCData(ApplicationDbContext applicationDbContext) {
_applicationDbContext = applicationDbContext;
}
public void Add(MGP1DFC mgp1dfc)
{
_applicationDbContext.Add(mgp1dfc);
}
public void Delete(MGP1DFC mgp1dfc)
{
_applicationDbContext.Remove(mgp1dfc);
}
public async Task<IEnumerable<MGP1DFC>> GetAllAsync()
{
return await _applicationDbContext.MGP1DFC.OrderBy(x => x.ReceivedByDateTime).ToListAsync();
}
public async Task<MGP1DFC> GetSingleAsync(int id)
{
return await _applicationDbContext.MGP1DFC.FirstOrDefaultAsync(x => x.Id == id);
}
public async Task SaveAsync()
{
await _applicationDbContext.SaveChangesAsync();
}
public void Update(MGP1DFC mgp1dfc)
{
_applicationDbContext.Update(mgp1dfc);
}
}
Нет проблем.
Однако ранее здесь была служба в памяти:
public class MGP1DFCInMemory : IMGP1DFC
{
List<MGP1DFC> MGP1DFCs;
public MGP1DFCInMemory()
{
MGP1DFCs = new List<MGP1DFC> {
new MGP1DFC { Id = 1, Name = "DS", Nino = "DS123123D", SentByName = "Bobbleton", SentByEmail = "Bobbleton@ds.com.uk.net", ReceivedByDateTime = DateTime.Now},
new MGP1DFC { Id = 2, Name = "Kenneth", Nino = "FG123123D", SentByName = "Pattie", SentByEmail = "pattie@ds.com.uk.net", ReceivedByDateTime = DateTime.Now.AddHours(6)},
new MGP1DFC { Id = 3, Name = "Bob", Nino = "DS123123D", SentByName = "The Chieftain", SentByEmail = "cheiftain@ds.com.uk.net", ReceivedByDateTime = DateTime.Now.AddMinutes(904)}
};
}
public void Add(MGP1DFC MGP1DFC)
{
MGP1DFC.Id = MGP1DFCs.Max(index => index.Id) + 1;
MGP1DFCs.Add(MGP1DFC);
}
public void Delete(MGP1DFC MGP1DFC)
{
MGP1DFCs.Remove(MGP1DFC);
}
public IEnumerable<MGP1DFC> GetAll()
{
return MGP1DFCs.OrderBy(x => x.ReceivedByDateTime);
}
public MGP1DFC GetSingle(int id)
{
return MGP1DFCs.FirstOrDefault(x => x.Id == id);
}
public MGP1DFC Update(MGP1DFC category)
{
MGP1DFC formToUpdate = MGP1DFCs.FirstOrDefault(i => i.Id == category.Id);
formToUpdate.CompletedByDateTime = DateTime.Now;
formToUpdate.CompletedByEmail = "ds@ds.com";
formToUpdate.CompletedBy = "DS";
return formToUpdate;
}
}
Можно ли реализовать асинхронную службу в памяти?
например,
public async Task<IEnumerable<MGP1DFC>> GetAllAsync()
{
return await MGP1DFCs.OrderBy(x => x.ReceivedByDateTime).ToListAsync();
}
Или это полная трата времени, пытаться!?