コード例 #1
0
        public static void ConfigureCreateCommand(ObjectDef m, string schemaName, SqlCommand cmd, IEnumerable <object> values = null)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();
            StringBuilder sbParams   = new StringBuilder();

            sb.AppendLine(string.Format("INSERT INTO [{0}].[{1}](", schemaName, entityName));
            var q = m.Properties.Where(p => !p.HasIgnoreColumn(DataOperation.Create)).OrderBy(p => p.PropertyOrder); //.Where(p => p.AllowCreate && !p.AutoGenerated).OrderBy(p => p.PropertyOrder);

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName; // (from mep in m.ModelEntityMappings where mep.ModelPropertyName.Equals(mp.Name) select mep.EntityPropertyName).SingleOrDefault();
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                    sbParams.AppendLine(string.Format("\t@{0}", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                    sbParams.AppendLine(string.Format("\t, @{0}", entityPropName));
                }
                if (values != null)
                {
                    cmd.Parameters.AddWithValue("@" + entityPropName, values.ElementAt(i) != null ? values.ElementAt(i) : DBNull.Value);
                }
            }
            sb.AppendLine(")");
            sb.AppendLine("VALUES(");
            sb.AppendLine(sbParams.ToString());
            sb.AppendLine(")");
            cmd.CommandText = sb.ToString();
        }
コード例 #2
0
        public static void ConfigureGetAllCommand(ObjectDef m, string schemaName, SqlCommand cmd)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine("SELECT ");
            var q = m.GetOrderedProperties();

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            cmd.CommandText = sb.ToString();
        }
コード例 #3
0
        public static void ConfigureFindCommand(ObjectDef m, string schemaName, SqlCommand cmd, params object[] keys)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine("SELECT ");
            var q = m.GetOrderedProperties();

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            var qKeys = m.GetKeys().Select(p => p.ColumnName);

            for (int i = 0; i < qKeys.Count(); i++)
            {
                if (keys[i] != null)
                {
                    sb.AppendLine(string.Format("WHERE [{0}] = @{0}", qKeys.ElementAt(i)));
                    cmd.Parameters.AddWithValue("@" + qKeys.ElementAt(i), keys[i]);
                }
            }
            cmd.CommandText = sb.ToString();
        }
コード例 #4
0
        public static void ConfigureCreateCommand(ObjectDef m, string schemaName, SqlCommand cmd, ObjectDefValues values = null)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();
            StringBuilder sbParams   = new StringBuilder();

            sb.AppendLine(string.Format("INSERT INTO [{0}].[{1}](", schemaName, entityName));
            var q = m.GetOrderedProperties();

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                    sbParams.AppendLine(string.Format("\t@{0}", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                    sbParams.AppendLine(string.Format("\t, @{0}", entityPropName));
                }
                if (values != null)
                {
                    cmd.Parameters.AddWithValue("@" + entityPropName, values.Values.ContainsKey(mp.Name) && values.Values[mp.Name] != null ? Convert.ChangeType(values.Values[mp.Name], TypeHelper.GetFullType(null, mp.TypeName)) : DBNull.Value);
                }
            }
            sb.AppendLine(")");
            sb.AppendLine("VALUES(");
            sb.AppendLine(sbParams.ToString());
            sb.AppendLine(")");
            cmd.CommandText = sb.ToString();
        }
コード例 #5
0
        public static void ConfigureFilterCommand(ObjectDef m, string schemaName, SqlCommand cmd, Condition cond)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine("SELECT ");
            var q = m.GetOrderedProperties();

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            if (cond != null)
            {
                string condString = cond.ToSqlString(true);
                if (!string.IsNullOrEmpty(condString))
                {
                    sb.AppendLine(string.Format("WHERE {0}", condString));
                    cmd.Parameters.AddRange(cond.GetSqlParameters().ToArray());
                }
            }
            cmd.CommandText = sb.ToString();
        }
コード例 #6
0
        public static void ConfigureFilterCommand(ObjectDef m, string schemaName, SqlCommand cmd, Condition cond, string orderByExpression, int maxRecordCount = -1)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();

            if (maxRecordCount > 0)
            {
                sb.AppendLine($"SELECT TOP({TopNParamName})");
            }
            else
            {
                sb.AppendLine("SELECT ");
            }
            var q = m.Properties.Where(p => !p.HasIgnoreColumn(DataOperation.Read)).OrderBy(p => p.PropertyOrder);; //.Where(p => p.AllowRead).OrderBy(p => p.PropertyOrder);

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName; // (from mep in m.ModelEntityMappings where mep.ModelPropertyName.Equals(mp.Name) select mep.EntityPropertyName).SingleOrDefault();
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            if (cond != null)
            {
                string condString = cond.ToSqlString(true);
                if (!string.IsNullOrEmpty(condString))
                {
                    sb.AppendLine(string.Format("WHERE {0}", condString));
                    cmd.Parameters.AddRange(cond.GetSqlParameters().ToArray());
                }
            }
            var orderByCols = GetOrderByCols(q);

            if (!string.IsNullOrEmpty(orderByExpression))
            {
                sb.AppendLine(string.Format("ORDER BY {0}", orderByExpression));
            }
            else
            {
                if (!string.IsNullOrEmpty(orderByCols))
                {
                    sb.AppendLine(string.Format("ORDER BY {0}", orderByCols));
                }
            }
            cmd.CommandText = sb.ToString();
            if (maxRecordCount > 0)
            {
                cmd.Parameters.AddWithValue(TopNParamName, maxRecordCount);
            }
        }
コード例 #7
0
        public static void ConfigureFilterCommand(ObjectDef m, string schemaName, SqlCommand cmd, Condition cond, string orderByExpression, int pageNumber, int pageSize)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();
            StringBuilder sbColumns  = new StringBuilder();
            var           q          = m.GetOrderedProperties();

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (i == 0)
                {
                    sbColumns.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sbColumns.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            string columns = sbColumns.ToString();
            string filters = string.Empty;

            if (cond != null)
            {
                string condString = cond.ToSqlString(true);
                if (!string.IsNullOrEmpty(condString))
                {
                    filters = string.Format("WHERE {0}", condString);
                    cmd.Parameters.AddRange(cond.GetSqlParameters().ToArray());
                }
            }
            sb.AppendLine(string.Format(";WITH {0}CTE AS", entityName));
            sb.AppendLine("(");
            sb.AppendLine("\tSELECT");
            sb.AppendLine(columns);
            sb.AppendLine(string.Format("\t, ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber", orderByExpression));
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            sb.AppendLine(filters);
            sb.AppendLine(")");
            sb.AppendLine("SELECT TOP(@PageSize)");
            sb.AppendLine(columns);
            sb.AppendLine(string.Format("FROM {0}CTE", entityName));
            sb.AppendLine("WHERE RowNumber > (@PageNumber - 1) * @PageSize");
            cmd.Parameters.AddWithValue("@PageNumber", pageNumber);
            cmd.Parameters.AddWithValue("@PageSize", pageSize);
            cmd.CommandText = sb.ToString();
        }
コード例 #8
0
        public static void ConfigureUpdateCommand(ObjectDef m, string schemaName, SqlCommand cmd, IEnumerable <object> values = null)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();
            StringBuilder sbFilters  = new StringBuilder();

            sb.AppendLine(string.Format("UPDATE [{0}].[{1}] SET", schemaName, entityName));
            var  q              = m.Properties.Where(p => !p.HasIgnoreColumn(DataOperation.Update)).OrderBy(p => p.PropertyOrder); //.Where(p => (p.AllowUpdate && !p.AutoGenerated) || p.IsKey).OrderBy(p => p.PropertyOrder);
            bool bKeyAdded      = false;
            bool setColumnAdded = false;

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName; // (from mep in m.ModelEntityMappings where mep.ModelPropertyName.Equals(mp.Name) select mep.EntityPropertyName).SingleOrDefault();
                if (mp.IsKey)
                {
                    if (!bKeyAdded)
                    {
                        sbFilters.Append(string.Format("WHERE [{0}] = @{0}", entityPropName));
                        bKeyAdded = true;
                    }
                    else
                    {
                        sbFilters.Append(string.Format("AND [{0}] = @{0}", entityPropName));
                    }
                }
                else
                {
                    if (!setColumnAdded)
                    {
                        sb.AppendLine(string.Format("\t[{0}] = @{0}", entityPropName));
                        setColumnAdded = true;
                    }
                    else
                    {
                        sb.AppendLine(string.Format("\t, [{0}] = @{0}", entityPropName));
                    }
                }
                if (values != null)
                {
                    cmd.Parameters.AddWithValue("@" + entityPropName, values.ElementAt(i) != null ? values.ElementAt(i) : DBNull.Value);
                }
            }
            sb.AppendLine(sbFilters.ToString());
            cmd.CommandText = sb.ToString();
        }
コード例 #9
0
        public static void ConfigureUpdateCommand(ObjectDef m, string schemaName, SqlCommand cmd, ObjectDefValues values = null)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();
            StringBuilder sbFilters  = new StringBuilder();

            sb.AppendLine(string.Format("UPDATE [{0}].[{1}] SET", schemaName, entityName));
            var  q              = m.GetOrderedProperties();
            bool bKeyAdded      = false;
            bool setColumnAdded = false;

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (mp.IsKey)
                {
                    if (!bKeyAdded)
                    {
                        sbFilters.Append(string.Format("WHERE [{0}] = @{0}", entityPropName));
                        bKeyAdded = true;
                    }
                    else
                    {
                        sbFilters.Append(string.Format("AND [{0}] = @{0}", entityPropName));
                    }
                }
                else
                {
                    if (!setColumnAdded)
                    {
                        sb.AppendLine(string.Format("\t[{0}] = @{0}", entityPropName));
                        setColumnAdded = true;
                    }
                    else
                    {
                        sb.AppendLine(string.Format("\t, [{0}] = @{0}", entityPropName));
                    }
                }
                if (values != null)
                {
                    cmd.Parameters.AddWithValue("@" + entityPropName, values.Values[mp.Name] != null ? Convert.ChangeType(values.Values[mp.Name], TypeHelper.GetFullType(null, mp.TypeName)) : DBNull.Value);
                }
            }
            sb.AppendLine(sbFilters.ToString());
            cmd.CommandText = sb.ToString();
        }
コード例 #10
0
ファイル: Evaluator.cs プロジェクト: ivee-tech/RazorCodeGen
        public object EvalDefault(ObjectDefProperty mp)
        {
            CodeDomProvider    provider = provider = CodeDomProvider.CreateProvider("CSharp");
            CompilerParameters cp       = new CompilerParameters();

            cp.GenerateExecutable    = false;
            cp.GenerateInMemory      = true;
            cp.TreatWarningsAsErrors = false;
            cp.ReferencedAssemblies.Add(this.GetType().Assembly.Location);
            string          key    = KeyGenerator.GetString();
            string          source = @"
using System;
using Iv.Common;
using Iv.Text;
using Iv.Calendar;
namespace Namespace" + key + @"
{ 
    public class Class" + key + @"
    {
        public static object Execute() 
        { 
            return " + mp.DefaultExpression + @";
        }
    }
}";
            CompilerResults cr     = provider.CompileAssemblyFromSource(cp, source);

            if (cr.Errors.Count > 0)
            {
                //TODO: log errors
                foreach (CompilerError ce in cr.Errors)
                {
                    Console.Out.WriteLine("  {0}", ce.ToString());
                }
                return(null);
            }
            else
            {
                object     obj    = cr.CompiledAssembly.CreateInstance(string.Format("Namespace{0}.Class{0}", key));
                MethodInfo mi     = obj.GetType().GetMethod("Execute", BindingFlags.Public | BindingFlags.Static);
                var        result = mi.Invoke(obj, null);
                mp.Value = result;
                return(result);
            }
        }
コード例 #11
0
        public static void ConfigureFindCommand(ObjectDef m, string schemaName, SqlCommand cmd, params object[] keys)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();

            sb.AppendLine("SELECT ");
            var q = m.Properties.Where(p => !p.HasIgnoreColumn(DataOperation.Update)).OrderBy(p => p.PropertyOrder); //.Where(p => p.AllowRead);

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName; // (from mep in m.ModelEntityMappings where mep.ModelPropertyName.Equals(mp.Name) select mep.EntityPropertyName).SingleOrDefault();
                if (i == 0)
                {
                    sb.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sb.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            var qKeys = (from mp in m.Properties
                         //join mep in m.ModelEntityMappings on mp.Name equals mep.ModelPropertyName
                         where mp.IsKey
                         select mp.ColumnName);

            for (int i = 0; i < qKeys.Count(); i++)
            {
                if (keys.Any() && keys[i] != null)
                {
                    sb.AppendLine(string.Format("WHERE [{0}] = @{0}", qKeys.ElementAt(i)));
                    cmd.Parameters.AddWithValue("@" + qKeys.ElementAt(i), keys[i]);
                }
            }
            cmd.CommandText = sb.ToString();
        }
コード例 #12
0
 public static void MapReaderObjectDefProperty(SqlDataReader rdr, ObjectDefProperty obj)
 {
     MapReader <ObjectDefProperty>(rdr, obj, DataOperation.Read);
 }
コード例 #13
0
 public static void DeriveObjectDefPropertyParameters(SqlCommand cmd, ObjectDefProperty obj)
 {
     DeriveParameters <ObjectDefProperty>(cmd, obj);
 }
コード例 #14
0
        public static void ConfigureFilterCommand(ObjectDef m, string schemaName, SqlCommand cmd, Condition cond, string orderByExpression, int pageNumber, int pageSize)
        {
            cmd.CommandType = CommandType.Text;
            string        entityName = m.EntityName;
            StringBuilder sb         = new StringBuilder();
            StringBuilder sbColumns  = new StringBuilder();
            var           q          = m.Properties.Where(p => !p.HasIgnoreColumn(DataOperation.Read)).OrderBy(p => p.PropertyOrder); //.Where(p => p.AllowRead).OrderBy(p => p.PropertyOrder);

            for (int i = 0; i < q.Count(); i++)
            {
                ObjectDefProperty mp = q.ElementAt(i);
                var entityPropName   = mp.ColumnName;
                if (i == 0)
                {
                    sbColumns.AppendLine(string.Format("\t[{0}]", entityPropName));
                }
                else
                {
                    sbColumns.AppendLine(string.Format("\t, [{0}]", entityPropName));
                }
            }
            string columns = sbColumns.ToString();
            string filters = string.Empty;

            if (cond != null)
            {
                string condString = cond.ToSqlString(true);
                if (!string.IsNullOrEmpty(condString))
                {
                    filters = string.Format("WHERE {0}", condString);
                    cmd.Parameters.AddRange(cond.GetSqlParameters().ToArray());
                }
            }
            sb.AppendLine($"SELECT {TotalCountParamName} = COUNT(*)");
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            sb.AppendLine(filters);
            sb.AppendLine(string.Format(";WITH {0}CTE AS", entityName));
            sb.AppendLine("(");
            sb.AppendLine("\tSELECT");
            sb.AppendLine(columns);
            var orderByCols = GetOrderByCols(q);

            if (!string.IsNullOrEmpty(orderByExpression))
            {
                sb.AppendLine(string.Format("\t, ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber", orderByExpression));
            }
            else
            {
                if (!string.IsNullOrEmpty(orderByCols))
                {
                    sb.AppendLine(string.Format("\t, ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber", orderByCols));
                }
                else
                {
                    var key = m.GetKey();
                    sb.AppendLine(string.Format("\t, ROW_NUMBER() OVER (ORDER BY {0}) AS RowNumber", key.Name));
                }
            }
            sb.AppendLine(string.Format("FROM [{0}].[{1}]", schemaName, entityName));
            sb.AppendLine(filters);
            sb.AppendLine(")");
            sb.AppendLine($"SELECT TOP({PageSizeParamName})");
            sb.AppendLine(columns);
            sb.AppendLine(string.Format("FROM {0}CTE", entityName));
            sb.AppendLine($"WHERE RowNumber > ({PageNumberParamName} - 1) * {PageSizeParamName}");
            cmd.Parameters.AddWithValue(PageNumberParamName, pageNumber);
            cmd.Parameters.AddWithValue(PageSizeParamName, pageSize);
            SqlParameter param = new SqlParameter(TotalCountParamName, SqlDbType.Int);

            param.Direction = ParameterDirection.InputOutput;
            param.Value     = 0;
            cmd.Parameters.Add(param);
            cmd.CommandText = sb.ToString();
        }