Beispiel #1
0
        public static List <string> GetNonDefaultValueInsertFields <T>(this IOrmLiteDialectProvider dialectProvider, T obj)
        {
            var insertFields = new List <string>();
            var modelDef     = typeof(T).GetModelDefinition();

            foreach (var fieldDef in modelDef.FieldDefinitionsArray)
            {
                if (!string.IsNullOrEmpty(dialectProvider.GetDefaultValue(fieldDef)))
                {
                    if (fieldDef.AutoId)
                    {
                        continue;
                    }

                    var value = fieldDef.GetValue(obj);
                    if (value == null || value.Equals(fieldDef.FieldTypeDefaultValue))
                    {
                        continue;
                    }
                }

                insertFields.Add(fieldDef.Name);
            }

            return(insertFields.Count == modelDef.FieldDefinitionsArray.Length
                ? null
                : insertFields);
        }
Beispiel #2
0
        public static void SetUpdateDate <T>(this IDbCommand cmd, string fieldName, IOrmLiteDialectProvider dialectProvider) where T : new()
        {
            var field       = typeof(T).GetProperty(fieldName);
            var alias       = field.GetCustomAttribute(typeof(AliasAttribute)) as AliasAttribute;
            var columnName  = dialectProvider.GetQuotedColumnName(dialectProvider.NamingStrategy.GetColumnName(alias?.Name ?? field.Name));
            var columnEqual = columnName + "=";

            var defaultValue = dialectProvider.GetDefaultValue(typeof(T), fieldName);
            var regex        = new Regex(columnEqual + "(" + dialectProvider.ParamString + @"\w*\b)(,|\s)");
            var match        = regex.Match(cmd.CommandText);

            if (match.Success)
            {
                cmd.CommandText = regex.Replace(cmd.CommandText, columnEqual + defaultValue + "$2", 1);
                cmd.Parameters.RemoveAt(match.Groups[1].Value);
            }
            else
            {
                cmd.CommandText = Regex.Replace(cmd.CommandText, @"(^|\s)SET ", "$1SET " + columnEqual + defaultValue + ", ");
            }
        }