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); } } }