Ejemplo n.º 1
0
        public ActionParams Upsert(IClassMapper classMap, object entity)
        {
            var columns = classMap.GetNotIgnoredColumns();

            var guids = new IPropertyMap[0];

            if (Configuration.AutoPopulateKeyGuidValue)
            {
                guids = columns.Where(x => x.PropertyInfo.PropertyType == typeof(Guid)).ToArray();

                foreach (var guid in guids)
                {
                    if ((Guid)guid.Getter(entity) != Guid.Empty)
                    {
                        continue;
                    }

                    var value = Configuration.GuidCreator.GetGuid();
                    guid.Setter(entity, value);
                }
            }

            var sql = Configuration.Dialect.GetUpsertSql(classMap);

            var dynamicParameters = new DynamicParameters();

            foreach (var column in columns)
            {
                dynamicParameters.Add(column.Name, column.Getter(entity));
            }

            return(ActionParams.New(sql, dynamicParameters));
        }
Ejemplo n.º 2
0
        private string GetInsertSection(IClassMapper classMap)
        {
            var columns = classMap.GetNotIgnoredColumns();

            var columnNames = columns.Select(p => GetColumnName(classMap, p, false));

            var parameters = columns.Select(p => Configuration.Dialect.ParameterPrefix + p.Name);

            return($"({string.Join(", ", columnNames)}) VALUES ({string.Join(", ", parameters)})");
        }
        private string GetInsertSection(IClassMapper classMap)
        {
            var columns = classMap.GetNotIgnoredColumns();

            var columnNames = columns.Select(p => GetColumnName(p.ColumnName, null));

            var parameters = columns.Select(p => ParameterPrefix + p.Name);

            return($"({string.Join(", ", columnNames)}) VALUES ({string.Join(", ", parameters)})");
        }
Ejemplo n.º 4
0
        public string Insert(IClassMapper classMap)
        {
            return(_insertCache.GetOrAdd(classMap.EntityType.TypeHandle, x =>
            {
                var columns = classMap.GetNotIgnoredColumns();

                if (!columns.Any())
                {
                    throw new ArgumentException("No columns were mapped.");
                }

                var columnNames = columns.Select(p => GetColumnName(classMap, p, false));

                var parameters = columns.Select(p => Configuration.Dialect.ParameterPrefix + p.Name);

                var sql = new StringBuilder(
                    $"INSERT INTO {GetTableName(classMap)} ({columnNames.AppendStrings()}) VALUES ({parameters.AppendStrings()})");

                return sql.ToString();
            }));
        }
Ejemplo n.º 5
0
        public ActionParams Insert(IClassMapper classMap, object entity)
        {
            var columns = classMap.GetNotIgnoredColumns();

            var guids = new IPropertyMap[0];

            if (Configuration.AutoPopulateKeyGuidValue)
            {
                guids = columns.Where(x => x.PropertyInfo.PropertyType == typeof(Guid)).ToArray();

                foreach (var guid in guids)
                {
                    if ((Guid)guid.Getter(entity) != Guid.Empty)
                    {
                        continue;
                    }

                    var value = Configuration.GuidCreator.GetGuid();
                    guid.Setter(entity, value);
                }
            }

            var sql = SqlGenerator.Insert(classMap);

            var dynamicParameters = new DynamicParameters();

            foreach (var column in columns)
            {
                dynamicParameters.Add(column.Name, column.Getter(entity));
            }

            if (classMap.HasAutoGeneratedId() && SqlGenerator.SupportsMultipleStatements())
            {
                sql += Configuration.Dialect.BatchSeparator + SqlGenerator.IdentitySql(classMap);
            }

            return(ActionParams.New(sql, dynamicParameters));
        }