public virtual async Task <Employee> FindAsync(int id)
 {
     using (var context = new CodingExerciseContext())
     {
         return(await context.Employees.FirstOrDefaultAsync(x => x.Id == id));
     }
 }
        public virtual async Task <Employee> SaveAsync(Employee employee)
        {
            using (var context = new CodingExerciseContext())
            {
                if (employee == null)
                {
                    throw new ArgumentException("Invalid Employee.");
                }

                context.Employees.Add(employee);
                await context.SaveChangesAsync();

                return(employee);
            }
        }
        public void CleanDatabase()
        {
            using (var context = new CodingExerciseContext())
            {
                var tableNames = context.Database
                                 .SqlQuery <string>(
                    "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT LIKE '%Migration%'")
                                 .ToList();

                foreach (var tableName in tableNames)
                {
                    // Table names cannot be sent as parameters. The table names are resolved at parse time, since they are needed for planning and such things.
                    // We need to use string replacement for it.
                    // It's not a security issue (or even the risk of becoming one) as long as the table name does not come from a user input.
                    context.Database.ExecuteSqlCommand($"DELETE FROM {tableName}");
                }

                context.SaveChanges();
            }
        }
Exemplo n.º 4
0
        public async Task SaveAsync_SavesEmployee()
        {
            // Arrange
            var employee   = CreateEmployee();
            var repository = new EmployeeRepository();

            // Act
            var savedEmployee = await repository.SaveAsync(employee);

            // Assert
            using (var context = new CodingExerciseContext())
            {
                Assert.IsNotNull(savedEmployee);
                var employeeFromDatabase = context.Employees.FirstOrDefault(e => e.Id == savedEmployee.Id);
                Assert.IsNotNull(employeeFromDatabase);
                Assert.AreEqual(employee.Name, employeeFromDatabase.Name);
                Assert.AreEqual(employee.Email, employeeFromDatabase.Email);
                Assert.AreEqual(employee.ManagerId, employeeFromDatabase.ManagerId);
                Assert.AreEqual(employee.Role, employeeFromDatabase.Role);
            }
        }