Example #1
0
        protected static void SetParameters(SqlCommand command, ProcedureParameters parms)
        {
            foreach (SearchCriteria parm in parms.EnumerateSubCriteria())
            {
                String sqlParmName = "@" + parm.GetKey();
                
                if (parm is ProcedureParameter<DateTime?>)
                {
                    ProcedureParameter<DateTime?> parm2 = (ProcedureParameter<DateTime?>)parm;
                    if (!parm2.Output)
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.DateTime);
                        sqlParm.IsNullable = true;
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<DateTime>)
                {
                    ProcedureParameter<DateTime> parm2 = (ProcedureParameter<DateTime>)parm;
                    if (!parm2.Output)
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.DateTime);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<int>)
                {
                    ProcedureParameter<int> parm2 = (ProcedureParameter<int>)parm;

                    if (!parm2.Output)
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.Int);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<ServerEntityKey>)
                {
                    sqlParmName = sqlParmName.Replace("Key", "GUID");
                    ProcedureParameter<ServerEntityKey> parm2 = (ProcedureParameter<ServerEntityKey>)parm;

                    if (!parm2.Output)
                    {
                        if (parm2.Value!=null)
                            command.Parameters.AddWithValue(sqlParmName, parm2.Value.Key);   
                        else
                        {
                            command.Parameters.AddWithValue(sqlParmName, DBNull.Value);   
                        }
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.UniqueIdentifier);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<bool>)
                {
                    ProcedureParameter<bool> parm2 = (ProcedureParameter<bool>)parm;
                    if (!parm2.Output)
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.Bit);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<string>)
                {
                    ProcedureParameter<string> parm2 = (ProcedureParameter<string>)parm;

                    if (!parm2.Output)
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.NVarChar, 1024);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<ServerEnum>)
                {
                    ProcedureParameter<ServerEnum> parm2 = (ProcedureParameter<ServerEnum>)parm;
                    if (parm2.Value == null)
                        command.Parameters.AddWithValue(sqlParmName, null);
                    else
                    {
                        if (parm2.Output)												
                            throw new PersistenceException("Unsupported output parameter type: ServerEnum",null);

                        command.Parameters.AddWithValue(sqlParmName, parm2.Value.Enum);
                    }
                }
                else if (parm is ProcedureParameter<Decimal>)
                {
                    ProcedureParameter<Decimal> parm2 = (ProcedureParameter<Decimal>)parm;

                    if (!parm2.Output)
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.Decimal);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter<XmlDocument>)
                {
                    ProcedureParameter<XmlDocument> parm2 = (ProcedureParameter<XmlDocument>)parm;
                    if (parm2.Value == null)
                        command.Parameters.AddWithValue(sqlParmName, null);
                    else
                    {
                        if (parm2.Output)
                            throw new PersistenceException("Unsupported output parameter type: XmlDocument", null);

                        if (parm2.Value.DocumentElement!=null)
                        {
                            XmlNodeReader reader = new XmlNodeReader(parm2.Value.DocumentElement);
                            SqlXml xml = new SqlXml(reader);
                            command.Parameters.AddWithValue(sqlParmName, xml);
                        }
                        else
                        {
                            SqlXml xml = new SqlXml();
                            command.Parameters.AddWithValue(sqlParmName, xml);
                        }
                        
                    }
                }
                else
                    throw new PersistenceException("Unknown procedure parameter type: " + parm.GetType(), null);

            }

        }
Example #2
0
        protected static void SetParameters(SqlCommand command, ProcedureParameters parms)
        {
            foreach (SearchCriteria parm in parms.EnumerateSubCriteria())
            {
                String sqlParmName = "@" + parm.GetKey();

                if (parm is ProcedureParameter <DateTime?> )
                {
                    ProcedureParameter <DateTime?> parm2 = (ProcedureParameter <DateTime?>)parm;
                    if (!parm2.Output)
                    {
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.DateTime);
                        sqlParm.IsNullable = true;
                        sqlParm.Direction  = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <DateTime> )
                {
                    ProcedureParameter <DateTime> parm2 = (ProcedureParameter <DateTime>)parm;
                    if (!parm2.Output)
                    {
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.DateTime);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <int> )
                {
                    ProcedureParameter <int> parm2 = (ProcedureParameter <int>)parm;

                    if (!parm2.Output)
                    {
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.Int);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <ServerEntityKey> )
                {
                    sqlParmName = sqlParmName.Replace("Key", "GUID");
                    ProcedureParameter <ServerEntityKey> parm2 = (ProcedureParameter <ServerEntityKey>)parm;

                    if (!parm2.Output)
                    {
                        if (parm2.Value != null)
                        {
                            command.Parameters.AddWithValue(sqlParmName, parm2.Value.Key);
                        }
                        else
                        {
                            command.Parameters.AddWithValue(sqlParmName, DBNull.Value);
                        }
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.UniqueIdentifier);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <bool> )
                {
                    ProcedureParameter <bool> parm2 = (ProcedureParameter <bool>)parm;
                    if (!parm2.Output)
                    {
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.Bit);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <string> )
                {
                    ProcedureParameter <string> parm2 = (ProcedureParameter <string>)parm;

                    if (!parm2.Output)
                    {
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.NVarChar, 1024);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <ServerEnum> )
                {
                    ProcedureParameter <ServerEnum> parm2 = (ProcedureParameter <ServerEnum>)parm;
                    if (parm2.Value == null)
                    {
                        command.Parameters.AddWithValue(sqlParmName, null);
                    }
                    else
                    {
                        if (parm2.Output)
                        {
                            throw new PersistenceException("Unsupported output parameter type: ServerEnum", null);
                        }

                        command.Parameters.AddWithValue(sqlParmName, parm2.Value.Enum);
                    }
                }
                else if (parm is ProcedureParameter <Decimal> )
                {
                    ProcedureParameter <Decimal> parm2 = (ProcedureParameter <Decimal>)parm;

                    if (!parm2.Output)
                    {
                        command.Parameters.AddWithValue(sqlParmName, parm2.Value);
                    }
                    else
                    {
                        SqlParameter sqlParm = command.Parameters.Add(sqlParmName, SqlDbType.Decimal);
                        sqlParm.Direction = ParameterDirection.Output;
                    }
                }
                else if (parm is ProcedureParameter <XmlDocument> )
                {
                    ProcedureParameter <XmlDocument> parm2 = (ProcedureParameter <XmlDocument>)parm;
                    if (parm2.Value == null)
                    {
                        command.Parameters.AddWithValue(sqlParmName, null);
                    }
                    else
                    {
                        if (parm2.Output)
                        {
                            throw new PersistenceException("Unsupported output parameter type: XmlDocument", null);
                        }

                        if (parm2.Value.DocumentElement != null)
                        {
                            XmlNodeReader reader = new XmlNodeReader(parm2.Value.DocumentElement);
                            SqlXml        xml    = new SqlXml(reader);
                            command.Parameters.AddWithValue(sqlParmName, xml);
                        }
                        else
                        {
                            SqlXml xml = new SqlXml();
                            command.Parameters.AddWithValue(sqlParmName, xml);
                        }
                    }
                }
                else
                {
                    throw new PersistenceException("Unknown procedure parameter type: " + parm.GetType(), null);
                }
            }
        }
Example #3
0
        protected static void GetOutputParameters(SqlCommand command, ProcedureParameters parms)
        {
            foreach (SearchCriteria parm in parms.EnumerateSubCriteria())
            {
                String sqlParmName = "@" + parm.GetKey();

                if (parm is ProcedureParameter<DateTime?>)
                {
                    ProcedureParameter<DateTime?> parm2 = (ProcedureParameter<DateTime?>)parm;
                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (DateTime?)sqlParm.Value;
                }
                else if (parm is ProcedureParameter<DateTime>)
                {
                    ProcedureParameter<DateTime> parm2 = (ProcedureParameter<DateTime>)parm;
                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (DateTime)sqlParm.Value;
                }
                else if (parm is ProcedureParameter<int>)
                {
                    ProcedureParameter<int> parm2 = (ProcedureParameter<int>)parm;

                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    //object o = command.Connection.Get
                    if (sqlParm.Value != null)
                        parm2.Value = (int)sqlParm.Value;
                }
                else if (parm is ProcedureParameter<ServerEntityKey>)
                {
                    sqlParmName = sqlParmName.Replace("Key", "GUID");
                    ProcedureParameter<ServerEntityKey> parm2 = (ProcedureParameter<ServerEntityKey>)parm;

                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = new ServerEntityKey("", sqlParm.Value);
                }
                else if (parm is ProcedureParameter<bool>)
                {
                    ProcedureParameter<bool> parm2 = (ProcedureParameter<bool>)parm;
                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (bool)sqlParm.Value;
                }
                else if (parm is ProcedureParameter<Decimal>)
                {
                    ProcedureParameter<Decimal> parm2 = (ProcedureParameter<Decimal>)parm;

                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (Decimal)sqlParm.Value;
                }
                else if (parm is ProcedureParameter<string>)
                {
                    ProcedureParameter<string> parm2 = (ProcedureParameter<string>)parm;

                    if (!parm2.Output)
                        continue;
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    if (sqlParm.Value != DBNull.Value)
                        parm2.Value = (string)sqlParm.Value;
                }
            }
        }
Example #4
0
        protected static void GetOutputParameters(SqlCommand command, ProcedureParameters parms)
        {
            foreach (SearchCriteria parm in parms.EnumerateSubCriteria())
            {
                String sqlParmName = "@" + parm.GetKey();

                if (parm is ProcedureParameter <DateTime?> )
                {
                    ProcedureParameter <DateTime?> parm2 = (ProcedureParameter <DateTime?>)parm;
                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (DateTime?)sqlParm.Value;
                }
                else if (parm is ProcedureParameter <DateTime> )
                {
                    ProcedureParameter <DateTime> parm2 = (ProcedureParameter <DateTime>)parm;
                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (DateTime)sqlParm.Value;
                }
                else if (parm is ProcedureParameter <int> )
                {
                    ProcedureParameter <int> parm2 = (ProcedureParameter <int>)parm;

                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    //object o = command.Connection.Get
                    if (sqlParm.Value != null)
                    {
                        parm2.Value = (int)sqlParm.Value;
                    }
                }
                else if (parm is ProcedureParameter <ServerEntityKey> )
                {
                    sqlParmName = sqlParmName.Replace("Key", "GUID");
                    ProcedureParameter <ServerEntityKey> parm2 = (ProcedureParameter <ServerEntityKey>)parm;

                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = new ServerEntityKey("", sqlParm.Value);
                }
                else if (parm is ProcedureParameter <bool> )
                {
                    ProcedureParameter <bool> parm2 = (ProcedureParameter <bool>)parm;
                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (bool)sqlParm.Value;
                }
                else if (parm is ProcedureParameter <Decimal> )
                {
                    ProcedureParameter <Decimal> parm2 = (ProcedureParameter <Decimal>)parm;

                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    parm2.Value = (Decimal)sqlParm.Value;
                }
                else if (parm is ProcedureParameter <string> )
                {
                    ProcedureParameter <string> parm2 = (ProcedureParameter <string>)parm;

                    if (!parm2.Output)
                    {
                        continue;
                    }
                    SqlParameter sqlParm = command.Parameters[sqlParmName];
                    if (sqlParm.Value != DBNull.Value)
                    {
                        parm2.Value = (string)sqlParm.Value;
                    }
                }
            }
        }