/// <inheritdoc /> protected override async Task Validate(Show resource) { await base.Validate(resource); if (resource.Studio != null) { resource.Studio = await _studios.CreateIfNotExists(resource.Studio); resource.StudioID = resource.Studio.ID; } if (resource.Genres != null) { resource.Genres = await resource.Genres .SelectAsync(x => _genres.CreateIfNotExists(x)) .ToListAsync(); _database.AttachRange(resource.Genres); } if (resource.ExternalIDs != null) { foreach (MetadataID id in resource.ExternalIDs) { id.Provider = _database.LocalEntity <Provider>(id.Provider.Slug) ?? await _providers.CreateIfNotExists(id.Provider); id.ProviderID = id.Provider.ID; } _database.MetadataIds <Show>().AttachRange(resource.ExternalIDs); } if (resource.People != null) { foreach (PeopleRole role in resource.People) { role.People = _database.LocalEntity <People>(role.People.Slug) ?? await _people.CreateIfNotExists(role.People); role.PeopleID = role.People.ID; _database.Entry(role).State = EntityState.Added; } } }