protected async Task <Guid> ProcessPerson(string lookupId, string forenames, string surname, DateTime?dateOfBirth, DateTime?dateOfDeath, Guid?countryGuid) { var lookupPerson = await Provider.GetLookupPerson(ImportSite, lookupId); if (lookupPerson != null) { return(lookupPerson.PersonGuid); } else { var personGuid = Guid.NewGuid(); Provider.Add(new Person() { PrimaryKey = personGuid }); var personV = PersonV.CreateNew <PersonV>(User.GetUserId()); personV.HeaderKey = personGuid; personV.Forenames = forenames; personV.Surname = surname; personV.SearchText = personV.SetSearchText(); personV.DateOfBirth = dateOfBirth; personV.DateOfDeath = dateOfDeath; personV.CountryGuid = countryGuid; personV.EffectiveFrom = Date.LowDate; personV.EffectiveTo = Date.HighDate; Provider.Add(personV); Provider.Add(new LookupPerson() { PrimaryKey = Guid.NewGuid(), ImportSite = ImportSite, PersonGuid = personGuid, LookupId = lookupId }); Provider.SaveChanges(); return(personGuid); } }