public int SavePersonGraph(PersonPOCO personPOCO) {
            int numRowsAffected = 0;

            Person person = PersonMapper.MapOneDALtoEF(personPOCO);
            try {
                using (var context = new AdventureWorks2012Entities()) {
                    context.Set<Person>().Add(person);
                    var entry = context.ChangeTracker.Entries<Person>().Where(e => e.Entity.BusinessEntityID == personPOCO.BusinessEntityID).FirstOrDefault();
                    entry.State = ConvertState(personPOCO.CrudState);
                    if (personPOCO.CrudState == CrudState.Unchanged) {
                        var databaseValues = entry.GetDatabaseValues();
                        entry.OriginalValues.SetValues(databaseValues);
                    }

                    numRowsAffected = context.SaveChanges();
                }
            }
            catch (System.Data.Entity.Infrastructure.DbUpdateException ex) {
                if (ex.InnerException != null && ex.InnerException is System.Data.SqlClient.SqlException
                   && ((System.Data.SqlClient.SqlException)ex.InnerException).ErrorCode == 8152)
                    throw ex.InnerException;
                else
                    throw ex;
            }

            return numRowsAffected;
        }
        public PersonPOCO GetPersonById(int businessEntityId) {
            PersonPOCO personPOCO = null;

            // Get Person from database.
            Person person;
            using (var context = new AdventureWorks2012Entities()) {
                person = context.People.Where(p => p.BusinessEntityID == businessEntityId)
                    .AsNoTracking()
                    .FirstOrDefault();
            }

            // Map Person from database into PersonPOCO.
            personPOCO = PersonMapper.MapOneEFtoDAL(person);
            return personPOCO;
        }
        public IList<PersonPOCO> GetPersons() {
            List<PersonPOCO> personPOCOs;

            // Get Persons from database.
            List<Person> persons;
            using (var context = new AdventureWorks2012Entities()) {
                IQueryable<EF.Person> dbQuery = context.People;
                persons = dbQuery
                    .AsNoTracking()
                    .ToList();
            }

            // Map Persons from database into PersonPOCOs.
            personPOCOs = PersonMapper.MapAllEFtoDAL(persons).ToList();
            return personPOCOs;
        }