/// <summary>
        /// Creates the table for saving information on installed versions if necessary.
        /// </summary>
        /// <param name="unitOfWork">The unit of work to work with</param>
        public override void InitInstalledVersions(SQLUnitOfWork unitOfWork)
        {
            if (!m_skipInitInstalledVersions)
            {
                bool tableExists = false;

                using (IDbCommand command = unitOfWork.Connection.CreateCommand())
                {
                    command.CommandText = "SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = '" + m_installedVersionsTableName + "'";
                    command.Transaction = unitOfWork.Transaction;

                    tableExists = ((long)command.ExecuteScalar()) > 0;
                }

                if (!tableExists)
                {
                    using (IDbCommand command = unitOfWork.Connection.CreateCommand())
                    {
                        command.CommandText = GetCreateInstalledVersionsTableScript();
                        command.Transaction = unitOfWork.Transaction;

                        command.ExecuteNonQuery();
                    }
                }
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            IUnitOfWork UnitOfWork = new SQLUnitOfWork(new EmployeeContext());

            IList <Employee> _Employees = new List <Employee>();

            _Employees.Add(new Employee {
                EmployeeName = "Jim Lee", Salary = 6000
            });
            _Employees.Add(new Employee {
                EmployeeName = "Jannet Smith", Salary = 7000
            });
            _Employees.Add(new Employee {
                EmployeeName = "Leonor Jordan", Salary = 8000
            });

            UnitOfWork.Departments.Add(new Department
            {
                DepartmentName = "R&D",
                Employees      = _Employees
            });
            UnitOfWork.Commit();

            UnitOfWork.ComputePayroll();
            UnitOfWork.Commit();

            //Let Display the computed salaries to test if it works.
            //You can refactor this and have it as method of IUnitWork.
            //This is for demo purpose only.

            var     _Department     = "";
            var     _EmployeeName   = "";
            decimal _Salary         = 0;
            decimal _StateTax       = 0;
            decimal _StateInsurance = 0;
            decimal _NetPay         = 0;

            Console.WriteLine("=======================================================================");
            foreach (var department in UnitOfWork.Departments.Query())
            {
                _Department = department.DepartmentName;
                foreach (var employee in department.Employees)
                {
                    _EmployeeName = employee.EmployeeName;
                    _Salary       = (decimal)employee.Salary;


                    foreach (var payroll in employee.Payrolls)
                    {
                        _StateTax       = (decimal)payroll.StateTax;
                        _StateInsurance = (decimal)payroll.StateInsurance;
                        _NetPay         = (decimal)payroll.NetPay;
                        Console.WriteLine(String.Format("{0} | {1} | {2:C2} | {3:C2} | {4 :C2} | {5:C2}", _Department, _EmployeeName, _Salary, _StateTax, _StateInsurance, _NetPay));
                    }
                }
            }
            Console.WriteLine("=======================================================================");
        }
Esempio n. 3
0
        protected override void ApplyMigration(SQLUnitOfWork unitOfWork, long versionNumber, out string description, out string checksum)
        {
            description = null;
            checksum    = null;

            switch (versionNumber)
            {
            case 1:
                // insert persons
                PersonDao.CreateDatabase(unitOfWork.Connection, unitOfWork.Transaction);

                description = "insert persons";

                break;

            case 2:
                // extend the names
                PersonDao.GetAllPersons(unitOfWork.Connection, unitOfWork.Transaction).ForEach(person =>
                {
                    person.Name = person.Name + " " + person.Name.ToUpper();

                    PersonDao.UpdatePerson(unitOfWork.Connection, unitOfWork.Transaction, person);
                });

                description = "extend name";

                break;

            case 3:
                // add age to the persons
                PersonDao.GetAllPersons(unitOfWork.Connection, unitOfWork.Transaction).ForEach(person =>
                {
                    person.Age = 20;

                    PersonDao.UpdatePerson(unitOfWork.Connection, unitOfWork.Transaction, person);
                });

                description = "add age";

                break;
            }
        }
Esempio n. 4
0
        public void UOW() // should be within one transaction unit
        {
            CustomerDbObject cust = new Customer();

            cust.CustomerName = "sample customer";
            CustomerDbObject lead = new Lead();

            lead.CustomerName = "sample lead";

            IRepositoryDAL <CustomerDbObject> dal = DALFactory.CreateCustomerDAL(DALType.ADOSQL);
            IUnitOfWork uow = new SQLUnitOfWork(GlobalConnectionString.ConnString);

            dal.SetUnitWork(uow);
            dal.Add(cust);
            try
            {
                uow.Commit();
            }
            catch (Exception)
            {
                uow.RollBack();
            }

            IRepositoryDAL <CustomerDbObject> dal2 = DALFactory.CreateCustomerDAL(DALType.EF);
            IUnitOfWork uow2 = new EFUnitOfWork(GlobalConnectionString.ConnString);

            dal2.SetUnitWork(uow2);
            dal2.Add(lead);
            dal2.Add(cust);
            try
            {
                uow2.Commit();
            }
            catch (Exception)
            {
                uow2.RollBack();
            }
        }
Esempio n. 5
0
 public SchoolRepository(SQLUnitOfWork uow)
 {
     this.m_uow = uow;
 }