示例#1
0
        public void AddInParameter(DbCommand cmd, PropertyInfo property, object objValue)
        {
            Database db = CurrentDatabase;

            if (CurrentDatabase == null)
            {
                if (DataStructureProvider.IsQuerySystemDB(cmd.CommandText))
                {
                    db = DataQueryProvider.SystemDatabase;
                }
                else
                {
                    db = DataQueryProvider.CompanyDatabase;
                }
            }

            String strProperty = property.Name;

            if (BusinessObjectHelper.IsBaseProperty(strProperty))
            {
                return;
            }
            if (property.PropertyType.Equals(typeof(Guid)) || property.PropertyType.Equals(typeof(Nullable <Guid>)))
            {
                if (objValue == null || objValue == DBNull.Value || ABCHelper.DataConverter.ConvertToGuid(objValue) == Guid.Empty)
                {
                    db.AddInParameter(cmd, strProperty, DbType.Guid, null);
                }
                else
                {
                    db.AddInParameter(cmd, strProperty, DbType.Guid, objValue);
                }
            }
            else if (property.PropertyType.Equals(typeof(Int32)) || property.PropertyType.Equals(typeof(Nullable <int>)))
            {
                if (objValue == null || objValue == DBNull.Value || (int)objValue == int.MinValue)
                {
                    db.AddInParameter(cmd, strProperty, DbType.Int32, null);
                }
                else
                {
                    db.AddInParameter(cmd, strProperty, DbType.Int32, objValue);
                }
            }
            else if (property.PropertyType.Equals(typeof(Boolean)))
            {
                db.AddInParameter(cmd, strProperty, DbType.Boolean, objValue);
            }

            else if (property.PropertyType.Equals(typeof(short)))
            {
                db.AddInParameter(cmd, strProperty, DbType.Int16, objValue);
            }

            else if (property.PropertyType.Equals(typeof(double)))
            {
                db.AddInParameter(cmd, strProperty, DbType.Double, objValue);
            }

            else if (property.PropertyType.Equals(typeof(decimal)))
            {
                db.AddInParameter(cmd, strProperty, DbType.Decimal, objValue);
            }

            else if (property.PropertyType.Equals(typeof(byte[])))
            {
                db.AddInParameter(cmd, strProperty, DbType.Binary, objValue);
            }

            else if ((property.PropertyType.Equals(typeof(String))) || (property.PropertyType.Equals(typeof(string))))
            {
                db.AddInParameter(cmd, strProperty, DbType.String, objValue);
            }

            else if (property.PropertyType.Equals(typeof(DateTime)))
            {
                if ((DateTime)objValue == DateTime.MinValue)
                {
                    db.AddInParameter(cmd, strProperty, DbType.DateTime, new DateTime(1, 1, 1));
                }
                else
                {
                    db.AddInParameter(cmd, strProperty, DbType.DateTime, objValue);
                }
            }

            else if (property.PropertyType.Equals(typeof(Nullable <DateTime>)))
            {
                if (objValue == null || objValue == DBNull.Value || (DateTime)objValue == DateTime.MinValue)
                {
                    db.AddInParameter(cmd, strProperty, DbType.DateTime, null);
                }
                else
                {
                    db.AddInParameter(cmd, strProperty, DbType.DateTime, objValue);
                }
            }
        }