Esempio n. 1
0
        protected virtual void CommandParameters(IDbCommand command, TEntity entity, PropertySkip propertyToSkip)
        {
            var propPairs = NameValuePropertyPairs(entity, propertyToSkip);

            foreach (var prop in propPairs)
            {
                command.AddParameter($"@{prop.Key}", prop.Value);
            }
        }
Esempio n. 2
0
        protected Dictionary <string, object> NameValuePropertyPairs(TEntity entity, PropertySkip propertyToSkip)
        {
            var properties = typeof(TEntity).GetProperties();

            switch (propertyToSkip)
            {
            case PropertySkip.None:
                return(properties                                                           // Collection initializing not gonna work !!!!
                       .ToDictionary(prop => prop.Name, prop => prop.GetValue(entity)));

            case PropertySkip.PrimaryKey:
                return(properties.Where(prop => prop.Name != $"{tEntityName}Id").ToDictionary(prop => prop.Name, prop => prop.GetValue(entity)));

            default:
                throw new Exception();                                                      // Create exception !!!!
            }
        }
Esempio n. 3
0
        protected virtual List <string> GenerateCommandInputStrings(TEntity entity, Operation operation, PropertySkip propertyToSkip)
        {
            var propPairs = NameValuePropertyPairs(entity, propertyToSkip);

            switch (operation)
            {
            case Operation.Create:
                return(GenerateCreateInputStrings());

            case Operation.Update:
                return(GenerateUpdateInputStrings());

            default:
                throw new Exception();                                                      // Create exception !!!!
            }

            List <string> GenerateCreateInputStrings()
            {
                StringBuilder columnsBuilder = new StringBuilder();
                StringBuilder valuesBuilder  = new StringBuilder();

                foreach (var kvp in propPairs)
                {
                    columnsBuilder.Append($"{kvp.Key},");
                    valuesBuilder.Append($"@{kvp.Key},");
                }
                columnsBuilder.Remove(columnsBuilder.Length - 1, 1);
                valuesBuilder.Remove(valuesBuilder.Length - 1, 1);

                return(new List <string>()
                {
                    columnsBuilder.ToString(), valuesBuilder.ToString()
                });
            }

            List <string> GenerateUpdateInputStrings()
            {
                StringBuilder colValsBuilder = new StringBuilder();

                foreach (var kvp in propPairs)
                {
                    colValsBuilder.Append($"{kvp.Key}=@{kvp.Key},");
                }
                colValsBuilder.Remove(colValsBuilder.Length - 1, 1);

                return(new List <string>()
                {
                    colValsBuilder.ToString()
                });
            }
        }