Esempio n. 1
0
        public void InsertRelations()
        {
            var emp_no   = 999799;
            var employee = helpers.GetEmployee(emp_no);

            foreach (var salary in employee.salaries)
            {
                fixture.employeesDb.Delete(salary);
            }

            using (var transaction = fixture.employeesDb.Transaction())
            {
                Assert.Empty(employee.salaries);

                var newSalary = new salaries
                {
                    emp_no    = employee.emp_no.Value,
                    salary    = 50000,
                    from_date = helpers.RandomDate(DateTime.Now.AddYears(-60), DateTime.Now.AddYears(-20)),
                    to_date   = helpers.RandomDate(DateTime.Now.AddYears(-60), DateTime.Now.AddYears(-20))
                };

                Assert.Empty(employee.salaries);
                transaction.Insert(newSalary);
                Assert.Empty(employee.salaries);
                transaction.Commit();
            }

            Assert.Single(employee.salaries);
            fixture.employeesDb.Delete(employee.salaries.First());
            Assert.Empty(employee.salaries);
        }
Esempio n. 2
0
        public void InsertRelationsReadAfterTransaction()
        {
            var emp_no   = 999797;
            var employee = helpers.GetEmployee(emp_no);

            foreach (var s in employee.salaries)
            {
                fixture.employeesDb.Delete(s);
            }

            salaries  salary     = null;
            employees employeeDb = null;

            var table = fixture.employeesDb.Provider.Metadata
                        .Tables.Single(x => x.DbName == "salaries");

            var cache = fixture.employeesDb.Provider.State.Cache.TableCaches.Single(x => x.Table == table);

            using var transaction = fixture.employeesDb.Transaction();

            Assert.False(cache.IsTransactionInCache(transaction));
            Assert.Empty(cache.GetTransactionRows(transaction));
            employeeDb = transaction.Query().employees.Single(x => x.emp_no == emp_no);
            Assert.Empty(employeeDb.salaries);

            var newSalary = new salaries
            {
                emp_no    = employeeDb.emp_no.Value,
                salary    = 50000,
                from_date = helpers.RandomDate(DateTime.Now.AddYears(-60), DateTime.Now.AddYears(-20)),
                to_date   = helpers.RandomDate(DateTime.Now.AddYears(-60), DateTime.Now.AddYears(-20))
            };

            //Assert.Empty(employeeDb.salaries);
            salary = transaction.Insert(newSalary);
            Assert.True(cache.IsTransactionInCache(transaction));
            Assert.Single(cache.GetTransactionRows(transaction));
            //Assert.Single(employeeDb.salaries);
            transaction.Commit();
            Assert.Equal(DatabaseTransactionStatus.Committed, transaction.Status);
            Assert.False(cache.IsTransactionInCache(transaction));
            Assert.Empty(cache.GetTransactionRows(transaction));


            Assert.Equal(salary, salary.employees.salaries.First());
            Assert.Equal(salary, employeeDb.salaries.First().employees.salaries.First());
            Assert.Equal(employeeDb, employeeDb.salaries.First().employees);
            Assert.Equal(employeeDb, salary.employees.salaries.First().employees);

            Assert.False(cache.IsTransactionInCache(transaction));
            Assert.Empty(cache.GetTransactionRows(transaction));

            Assert.Single(employee.salaries);
            fixture.employeesDb.Delete(employee.salaries.First());
            Assert.Empty(employee.salaries);
        }