Exemple #1
0
        public void Insert(Entity item)
        {
            var sqlTokens = new SqlTokens(item.GetDictionaryInDbStyle(true));
            var sql       = "insert into " + item.TableName
                            + " (" + sqlTokens.AsColumnNames(false) + ") select " + sqlTokens.AsIndcies(false) + " from dual";

            using (var connection = CreateOrReuseConnection())
            {
                using (var command = CreateCommand(sql, connection.GetAdoConnection()))
                {
                    AddParameters(command, sqlTokens.GetNonNullableFieldsAndValues(), 0);
                    command.ExecuteNonQuery();
                }
            }
        }
Exemple #2
0
        public void MergeInto(Entity item)
        {
            var dic         = item.GetWhereClauseOnPrimaryKeyDbStyle();
            var args        = dic.Values.ToArray();
            var whereClause = new SqlTokens(dic).AsWhereClause();

            var sql = "select count(1) from " + item.TableName + " " + whereClause;

            var count = QueryScalar <int>(sql, args);

            if (count == 0)
            {
                Insert(item);
            }
            else
            {
                Update(item);
            }
        }
Exemple #3
0
        public void Delete(Entity item, string whereClause = null, params object[] args)
        {
            //build where clause from metadata
            if (whereClause == null)
            {
                var dic       = item.GetWhereClauseOnPrimaryKeyDbStyle();
                var sqlTokens = new SqlTokens(dic);
                whereClause = sqlTokens.AsWhereClause();
                args        = dic.Values.ToArray();
            }

            var sql = "delete from " + item.TableName + " " + whereClause;

            using (var connection = CreateOrReuseConnection())
            {
                using (var command = CreateCommand(sql, connection.GetAdoConnection()))
                {
                    AddParameters(command, args);
                    command.ExecuteNonQuery();
                }
            }
        }