Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }