public override Company Map(EntityMapContext context)
        {
            // NOTE: Order is very important here.  We must map the objects in
            // the same order they were queried in the QueryBuilder.
            var company = Deduplicate(context.Start <Company>());
            var email   = context.Next <Email>("emails");
            var phone   = context.Next <Phone>("phones");

            if (company != null)
            {
                if (email != null &&
                    // Eliminate duplicates
                    !company.Emails.Any(e => e.Address == email.Address))
                {
                    company.Emails.Add(email);
                }

                if (phone != null &&
                    // Eliminate duplicates
                    !company.Phones.Any(p => p.Number == phone.Number))
                {
                    company.Phones.Add(phone);
                }
            }

            return(company);
        }
Exemple #2
0
        public override Person Map(EntityMapContext context)
        {
            // NOTE: Order is very important here.  We must map the objects in
            // the same order they were queried in the QueryBuilder.
            var person          = context.Start <Person>();
            var company         = context.Next <Company>("companies", companyEntityMapper);
            var email           = context.Next <Email>("emails");
            var phone           = context.Next <Phone>("phones");
            var supervisor      = context.Next <Person>("supervisor", personEntityMapper);
            var careerCounselor = context.Next <Person>("careerCounselor", personEntityMapper);

            if (person != null)
            {
                if (email != null &&
                    // Eliminate duplicates
                    !person.Emails.Any(e => e.Address == email.Address))
                {
                    person.Emails.Add(email);
                }

                if (phone != null &&
                    // Eliminate duplicates
                    !person.Phones.Any(p => p.Number == phone.Number))
                {
                    person.Phones.Add(phone);
                }

                person.Supervisor      = supervisor;
                person.CareerCounselor = careerCounselor;
            }

            return(person);
        }
        public override Person Map(EntityMapContext context)
        {
            // Avoid creating the mappers until they're used
            // NOTE: this avoids an infinite loop (had these been created in the ctor)
            if (companyEntityMapper == null)
            {
                companyEntityMapper = new CompanyEntityMapper();
            }
            if (personEntityMapper == null)
            {
                personEntityMapper = new PersonEntityMapper();
            }

            // NOTE: Order is very important here.  We must map the objects in
            // the same order they were queried in the QueryBuilder.

            // Start with the person, and deduplicate
            var person          = Deduplicate(context.Start <Person>());
            var company         = context.Next <Company>("companies", companyEntityMapper);
            var email           = context.Next <Email>("emails");
            var phone           = context.Next <Phone>("phones");
            var supervisor      = context.Next <Person>("supervisor", personEntityMapper);
            var careerCounselor = context.Next <Person>("careerCounselor", personEntityMapper);

            if (person != null)
            {
                if (company != null &&
                    // Eliminate duplicates
                    !person.Companies.Any(c => c.Id == company.Id))
                {
                    person.Companies.Add(company);
                }

                if (email != null &&
                    // Eliminate duplicates
                    !person.Emails.Any(e => e.Address == email.Address))
                {
                    person.Emails.Add(email);
                }

                if (phone != null &&
                    // Eliminate duplicates
                    !person.Phones.Any(p => p.Number == phone.Number))
                {
                    person.Phones.Add(phone);
                }

                person.Supervisor      = person.Supervisor ?? supervisor;
                person.CareerCounselor = person.CareerCounselor ?? careerCounselor;
            }

            return(person);
        }