using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Internal; using OemanTrader.Domain.Models; using OemanTrader.Domain.Services; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OemanTrader.EntityFramework.Services { public class AccountDataService : IDataService { private readonly OemanTraderDbContextFactory _contextFactory; public AccountDataService(OemanTraderDbContextFactory contextFactory) { _contextFactory = contextFactory; } public async Task Create(Account entity) { using (var context = _contextFactory.CreateDbContext()) { EntityEntry createdResult = await context.Set().AddAsync(entity); await context.SaveChangesAsync(); return createdResult.Entity; } } public async Task Delete(int id) { using (var context = _contextFactory.CreateDbContext()) { Account entity = await context.Set().FirstOrDefaultAsync((e) => e.Id == id); context.Set().Remove(entity); await context.SaveChangesAsync(); return true; } } public async Task Get(int id) { using (var context = _contextFactory.CreateDbContext()) { Account entity = await context.Accounts.Include(a => a.AssetTransactions).FirstOrDefaultAsync((e) => e.Id == id); return entity; } } public async Task> GetAll() { using (var context = _contextFactory.CreateDbContext()) { IEnumerable entities = await context.Accounts.Include(a => a.AssetTransactions).ToListAsync(); return entities; } } public async Task Update(int Id, Account entity) { using (var context = _contextFactory.CreateDbContext()) { entity.Id = Id; context.Set().Update(entity); await context.SaveChangesAsync(); return entity; } } } }