private IOperation ComposeInputOperation(Process process, AbstractConnection connection) { if (connection.Schemas && _entity.Schema.Equals(string.Empty)) { _entity.Schema = connection.DefaultSchema; } if (_entity.HasSqlKeysOverride()) { return(new SqlKeysOverrideOperation(_entity, connection)); } if (!_entity.PrimaryKey.WithInput().Any()) { return(new EmptyOperation()); } if (process.IsFirstRun || !_entity.CanDetectChanges(connection.IsDatabase)) { return(connection.ExtractAllKeysFromInput(_process, _entity)); } var operation = new EntityInputKeysExtractDelta(process, _entity, connection); if (operation.NeedsToRun()) { return(operation); } return(new EmptyOperation()); }