AddSubordinate() публичный Метод

public AddSubordinate ( Employee subordinate ) : void
subordinate Employee
Результат void
        public virtual void Collections_are_loaded_correctly_for_query_fetching_only_a_single_entity_where_entity_is_joined_to_itself_with_multiple_collections_using_only_parent_to_child_relation()
        {
            var company1 = new Company
            {
                Name = "Company 1"
            };

            Repository.Insert(company1);

            var employee1 = new Employee("firstname1", "lastname1");
            var employee2 = new Employee("firstname2", "lastname2");
            var employee3 = new Employee("firstname3", "lastname3");
            var employee4 = new Employee("firstname4", "lastname4");
            var employee5 = new Employee("firstname5", "lastname5");
            var employee6 = new Employee("firstname6", "lastname6");

            company1.AddEmployee(employee1);
            company1.AddEmployee(employee2);
            company1.AddEmployee(employee3);
            company1.AddEmployee(employee4);
            company1.AddEmployee(employee5);
            company1.AddEmployee(employee6);

            Repository.Insert(employee1); // Insert employee1 first since all the others reference that one

            employee1.AddMentee(employee2);
            employee1.AddMentee(employee3);

            employee1.AddSubordinate(employee4);
            employee1.AddSubordinate(employee5);

            Repository.Insert(employee2, employee3, employee4, employee5, employee6);

            var actualEmployee1 = Repository.Find<Employee>(primaryAlias: "manager")
                                            .Where<Employee>("manager", x => x.Id == employee1.Id)
                                            .OrWhere<Employee>("mentor", x => x.Id == employee1.Id)
                                            .Join(x => x.Subordinates, x => x.ManagerId, "manager", null)
                                            .Join(x => x.Mentees, x => x.MentorId, "mentor", null)
                                            .OrderBy(x => x.LastName)
                                            .OrderBy<Employee>("manager", x => x.LastName)
                                            .OrderBy<Employee>("mentor", x => x.LastName)
                                            .Execute();

            Assert.AreEqual(2, actualEmployee1.Mentees.Count);
            Assert.AreEqual("lastname2", actualEmployee1.Mentees[0].LastName);
            Assert.AreEqual("lastname3", actualEmployee1.Mentees[1].LastName);

            Assert.AreEqual(2, actualEmployee1.Subordinates.Count);
            Assert.AreEqual("lastname4", actualEmployee1.Subordinates[0].LastName);
            Assert.AreEqual("lastname5", actualEmployee1.Subordinates[1].LastName);
        }
        public void Condition_can_be_placed_on_table_without_alias_when_joining_with_aliased_table()
        {
            var company = new Company
                {
                    Name = "Company 1"
                };

            var employee1 = new Employee
                {
                    LastName = "Employee 1"
                };

            var employee2 = new Employee
                {
                    LastName = "Employee 2"
                };

            var employee3 = new Employee
                {
                    LastName = "Employee 3"
                };

            var manager1 = new Employee
                {
                    LastName = "Manager"
                };

            var manager2 = new Employee
                {
                    LastName = "Manager 2"
                };

            Repository.Insert(company);

            company.AddEmployee(employee1);
            company.AddEmployee(employee2);
            company.AddEmployee(employee3);
            company.AddEmployee(manager1);
            company.AddEmployee(manager2);

            Repository.Insert(manager1, manager2);

            // Add the subordinates after the managers have been saved so that the
            // ManagerIds are set to the correct values
            manager1.AddSubordinate(employee1);
            manager1.AddSubordinate(employee2);
            manager2.AddSubordinate(employee3);

            Repository.Insert(employee1, employee2, employee3);

            var actualEmployees = Repository.Find<Employee>()
                                            .Where(x => x.ManagerId == manager1.Id)
                                            .Join<Employee, Employee>(x => x.Subordinates, x => x.Manager, parentAlias: "Manager", childAlias: null)
                                            .OrderBy(x => x.LastName)
                                            .ExecuteList();

            Assert.AreEqual(2, actualEmployees.Count);

            AssertEqualsManagerAndSubordinates(employee1, actualEmployees[0]);
            AssertEqualsManagerAndSubordinates(employee2, actualEmployees[1]);
        }
        public void Entity_can_be_joined_to_itself_without_constraints()
        {
            var company = new Company
                {
                    Name = "Company 1"
                };

            var employee1 = new Employee
                {
                    LastName = "Employee 1"
                };

            var employee2 = new Employee
                {
                    LastName = "Employee 2"
                };

            var employee3 = new Employee
                {
                    LastName = "Employee 3"
                };

            var manager1 = new Employee
                {
                    LastName = "Manager"
                };

            var manager2 = new Employee
                {
                    LastName = "Manager 2"
                };

            Repository.Insert(company);

            company.AddEmployee(employee1);
            company.AddEmployee(employee2);
            company.AddEmployee(employee3);
            company.AddEmployee(manager1);
            company.AddEmployee(manager2);

            Repository.Insert(manager1, manager2);

            // Add the subordinates after the managers have been saved so that the
            // ManagerIds are set to the correct values
            manager1.AddSubordinate(employee1);
            manager1.AddSubordinate(employee2);
            manager2.AddSubordinate(employee3);

            Repository.Insert(employee1, employee2, employee3);

            var actualEmployees = Repository.Find<Employee>()
                                            .Join<Employee, Employee>(x => x.Subordinates, x => x.Manager, parentAlias: "Manager", childAlias: null)
                                            .OrderBy(x => x.LastName)
                                            .ExecuteList();

            Assert.AreEqual(5, actualEmployees.Count);

            AssertEqualsManagerAndSubordinates(employee1, actualEmployees[0]);
            AssertEqualsManagerAndSubordinates(employee2, actualEmployees[1]);
            AssertEqualsManagerAndSubordinates(employee3, actualEmployees[2]);
            AssertEqualsManagerAndSubordinates(manager1, actualEmployees[3]);
            AssertEqualsManagerAndSubordinates(manager2, actualEmployees[4]);
        }