public override IDbCommand BuildForObject(EntityObject obj, bool WithNoLock) { AttributeMap attrMap; IDbCommand cmd = clsMap.RelationalDatabase.GetCommand(); cmd.CommandText = this.SqlString + this.partForObject; for (int i = 0; i < this.ThisClassMap.GetKeySize(); i++) { attrMap = this.ThisClassMap.GetKeyAttributeMap(i); //该列是否Primary Key if (attrMap.Column.KeyType == ColumnKeyTypes.PrimaryKey) { IDataParameter p = cmd.CreateParameter(); //p.SourceColumn=attrMap.Column.GetFullyQualifiedName(); //列名 p.DbType = attrMap.Column.Type; //列类型 p.Value = obj.GetAttributeValue(attrMap.Name); //列值 if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?" + attrMap.Name; } else { p.ParameterName = "@" + attrMap.Name; } cmd.Parameters.Add(p); } } //tintown add by 2005-3-21 添加timestamp功能 if (ThisClassMap.TimestampAttribute != null) { attrMap = ThisClassMap.TimestampAttribute; IDataParameter p = cmd.CreateParameter(); //p.SourceColumn=attrMap.Column.GetFullyQualifiedName(); //列名 if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?" + attrMap.Name; } else { p.ParameterName = "@" + attrMap.Name; } p.DbType = attrMap.Column.Type; //列类型 p.Value = obj.GetAttributeValue(attrMap.Name); //列值 cmd.Parameters.Add(p); } return(cmd); }
public override IDbCommand BuildForObject(EntityObject obj, bool WithNoLock) { AttributeMap attrMap; IDbCommand cmd = thisClassMap.RelationalDatabase.GetCommand(); cmd.CommandText = this.SqlString; //这里要判断是否是WithNoLock if (WithNoLock) { if (ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MsAccess || ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MsSqlServer) { string sKey = " FROM " + ThisClassMap.RelationalDatabase.QuotationMarksStart + thisClassMap.Table.Name + ThisClassMap.RelationalDatabase.QuotationMarksEnd; cmd.CommandText = cmd.CommandText.Replace(sKey, sKey + " with(nolock) "); } } int size = thisClassMap.GetKeySize(); string strRealSql = cmd.CommandText; //add by duhu for (int i = 0; i < size; i++) { attrMap = thisClassMap.GetKeyAttributeMap(i); //该列是否Primary Key if (attrMap.Column.KeyType == ColumnKeyTypes.PrimaryKey) { IDataParameter p = cmd.CreateParameter(); if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?" + attrMap.Name; } else { p.ParameterName = "@" + attrMap.Name; } p.DbType = attrMap.Column.Type; //列类型 p.Value = obj.GetAttributeValue(attrMap.Name); //列值 cmd.Parameters.Add(p); strRealSql = strRealSql.Replace(p.ParameterName, p.Value.ToString()); //add by duhu } Logger.Write(strRealSql); // add by duhu } return(cmd); }
public override IDbCommand BuildForObject(EntityObject obj, bool WithNoLock) { AttributeMap attrMap; IDbCommand cmd = this.clsMap.RelationalDatabase.GetCommand(); object tmp; cmd.CommandText = this.SqlString; int size = ThisClassMap.GetSize(); for (int i = 0; i < size; i++) { attrMap = ThisClassMap.GetAttributeMap(i); if (attrMap.Column.KeyType == ColumnKeyTypes.PrimaryKey) { continue; } //tintown add at 2004-09-23 //如果此列为自动增长,则在生成update语句时跳过 if (attrMap.Column.IsAutoValue == true) { continue; } //tintown add end IDataParameter p = cmd.CreateParameter(); //p.SourceColumn=attrMap.Column.GetFullyQualifiedName(); //列名 if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?" + attrMap.Name; } else { p.ParameterName = "@" + attrMap.Name; } p.DbType = attrMap.Column.Type; //列类型 tmp = obj.GetAttributeValue(attrMap.Name); //列值 if (tmp == null || (tmp is DateTime && (DateTime)tmp == DateTime.MinValue)) { p.Value = DBNull.Value; } else { p.Value = tmp; } cmd.Parameters.Add(p); } //tintown added at 2005-3-22 更新timestamp的值 if (ThisClassMap.TimestampAttribute != null) { attrMap = ThisClassMap.TimestampAttribute; IDataParameter p = cmd.CreateParameter(); //p.SourceColumn=attrMap.Column.GetFullyQualifiedName(); //列名 if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?Update" + attrMap.Name; } else { p.ParameterName = "@Update" + attrMap.Name; } //p.ParameterName = "@Update" + attrMap.Name; p.DbType = attrMap.Column.Type; //列类型 p.Value = DateTime.Now.Ticks; //此timestamp由now的ticks生成一串数字 cmd.Parameters.Add(p); } for (int i = 0; i < ThisClassMap.GetKeySize(); i++) { attrMap = ThisClassMap.GetKeyAttributeMap(i); IDataParameter p = cmd.CreateParameter(); //p.SourceColumn=attrMap.Column.GetFullyQualifiedName(); //列名 if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?" + attrMap.Name; } else { p.ParameterName = "@" + attrMap.Name; } //p.ParameterName = "@" + attrMap.Name; p.DbType = attrMap.Column.Type; //列类型 p.Value = obj.GetAttributeValue(attrMap.Name); //列值 cmd.Parameters.Add(p); } //tintown add by 2005-3-21 添加timestamp功能 if (ThisClassMap.TimestampAttribute != null) { attrMap = ThisClassMap.TimestampAttribute; IDataParameter p = cmd.CreateParameter(); //p.SourceColumn=attrMap.Column.GetFullyQualifiedName(); //列名 if (this.ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MySql) { p.ParameterName = "?" + attrMap.Name; } else { p.ParameterName = "@" + attrMap.Name; } //p.ParameterName = "@" + attrMap.Name; p.DbType = attrMap.Column.Type; //列类型 p.Value = obj.GetAttributeValue(attrMap.Name); //列值 cmd.Parameters.Add(p); } return(cmd); }