public void Entities_with_relation_mapped_as_both_reference_and_foreign_key_value_can_be_written_and_read_back_again_using_join() { var company1 = new Company { Name = "Company 1" }; var company2 = new Company { Name = "Company 2" }; var employee1 = new Employee { FirstName = "Steve", LastName = "Smith", BirthDate = new DateTime(1972, 1, 2), }; var employee2 = new Employee { FirstName = "John", LastName = "Johnsson", BirthDate = new DateTime(1954, 11, 12), }; company1.AddEmployee(employee1); company1.AddEmployee(employee2); Repository.Insert(company1, company2); Repository.Insert(employee1, employee2); employee2.BirthDate = new DateTime(1965, 1, 1); Repository.Update(employee2); Repository.Update<Employee>() .Set(x => x.CompanyId, company2.Id) .Where(x => x.Id == employee2.Id) .Execute(); var allCompanies = Repository.Find<Company>() .OrderBy(x => x.Name) .Join<Company, Employee>(x => x.Employees, x => x.Company) .ExecuteList(); var actualEmployee2 = Repository.Find<Employee>() .Where(x => x.Id == employee2.Id) .Join<Company, Employee>(x => x.Employees, x => x.Company) .Execute(); // Set up original entities to match the expected result company1.RemoveEmployee(employee2); company2.AddEmployee(employee2); employee1.RefreshReferencedIds(); employee2.RefreshReferencedIds(); Assert.AreEqual(company1, allCompanies[0]); Assert.AreEqual(company2, allCompanies[1]); Assert.AreEqual(employee2, actualEmployee2); }
public void Update_can_be_performed_by_setting_a_reference_property_to_another_entity() { var company1 = new Company { Name = "Company 1" }; var company2 = new Company { Name = "Company 2" }; var employee1 = new Employee { FirstName = "Steve", LastName = "Smith", BirthDate = new DateTime(1972, 1, 2), }; var employee2 = new Employee { FirstName = "John", LastName = "Johnsson", BirthDate = new DateTime(1954, 11, 12), }; company1.AddEmployee(employee1); company1.AddEmployee(employee2); Repository.Insert(company1, company2); Repository.Insert(employee1, employee2); Repository.Update<Employee>() .Set(x => x.Company, company2) .Where(x => x.Id == employee2.Id) .Execute(); var allCompanies = Repository.Find<Company>() .OrderBy(x => x.Name) .Join<Company, Employee>(x => x.Employees, x => x.Company) .ExecuteList(); // Set up original entities to match the expected result company1.RemoveEmployee(employee2); company2.AddEmployee(employee2); employee1.RefreshReferencedIds(); employee2.RefreshReferencedIds(); Assert.AreEqual(company1, allCompanies[0]); Assert.AreEqual(company2, allCompanies[1]); }