Пример #1
0
        public void Insert(DataContext context, TableTypeRelationship relationship) //TODO: Fix: Executes only first command, other ignored
        {
            var command = _insertCommands.ContainsKey(context.Name) ? _insertCommands[context.Name] : null;

            foreach (var row in context)
            {
                if (command == null)
                {
                    var commandStringBuilder = new StringBuilder($"INSERT INTO {context.Name} (");
                    BuildNames(commandStringBuilder, row.Value, name => name, ")");

                    commandStringBuilder.Append(" VALUES (");

                    BuildNames(commandStringBuilder, row.Value, name => $"@{name}", ")");

                    commandStringBuilder.Append($" RETURNING {relationship.Id}");
                    command = new NpgsqlCommand(commandStringBuilder.ToString()
                                                , _transaction.NpgsqlConnection);
                }

                foreach (var field in row.Value)
                {
                    command.Parameters.AddWithValue(field.Value.Name, field.Value.Value ?? DBNull.Value);
                }

                _transaction.CurrentTransaction.CommandBuilder.AppendQuery(command);
            }
        }
Пример #2
0
 public void RegisterRelationship <T>(TableTypeRelationship tableRelationship)
 => _relationshipRegistry.Register <T>(tableRelationship);
Пример #3
0
 public void RegisterRelationship(Type type, TableTypeRelationship tableRelationship)
 => _relationshipRegistry.Register(type, tableRelationship);