Exemplo n.º 1
0
        //构造Delete Sql语句
        private void GetSqlDelete()
        {
            //Add 'DELETE FROM' clause to the select statement
            this.AddSqlClause("DELETE FROM ");
            this.AddSqlClause(ThisClassMap.RelationalDatabase.QuotationMarksStart + ThisClassMap.GetAttributeMap(0).Column.Table.Name + ThisClassMap.RelationalDatabase.QuotationMarksEnd);
            //Add 'WHERE key= "some value"' to the select statement

            this._deleteClause = this.sql;

            this.AddSqlClause(" WHERE 1=1 ");
            AttributeMap attrMap;
            ClassMap     thisClassMap = this.ThisClassMap;

            for (int i = 0; i < thisClassMap.GetKeySize(); i++)
            {
                attrMap = thisClassMap.GetKeyAttributeMap(i);
                //该列是否Primary Key
                if (attrMap.Column.KeyType == ColumnKeyTypes.PrimaryKey)
                {
                    this.partForObject += " AND " + this.clsMap.GetFullyQualifiedName(attrMap.Column.Name) + "=" +
                                          this.clsMap.RelationalDatabase.GetStringParameter(attrMap.Name, i);
                }
            }

            //tintown add by 2005-3-21 添加timestamp功能
            if (ThisClassMap.TimestampAttribute != null)
            {
                this.AddSqlClause(" AND " + this.clsMap.GetFullyQualifiedName(ThisClassMap.TimestampAttribute.Column.Name) + "=");
                this.AddSqlClause(ThisClassMap.RelationalDatabase.GetStringParameter(ThisClassMap.TimestampAttribute.Column.Name, ThisClassMap.GetKeySize()));
            }
        }
Exemplo n.º 2
0
        //构造Sql语句前部分
        private void GetSqlSelect()
        {
            this.AddSqlClause("SELECT ");
            //Add clauses for all attributes. Don't add "," before the first attribute
            bool         isFirst = true;
            ClassMap     clsMap  = thisClassMap;
            AttributeMap attrMap;
            int          size;
            string       stemp = " AS " + clsMap.RelationalDatabase.QuotationMarksStart;

            do
            {
                //attrMap = clsMap.GetAttributeMap (0);
                size = clsMap.SelfClassAttributes.Count;
                for (int i = 0; i < size; i++)
                {
                    attrMap = (AttributeMap)clsMap.SelfClassAttributes[i];
                    this.AddSqlClause((isFirst?"":",") + this.clsMap.GetFullyQualifiedName(attrMap.Column.Name));
                    this.AddSqlClause(stemp + attrMap.Name + clsMap.RelationalDatabase.QuotationMarksEnd);
                    isFirst = false;
                }
                clsMap = clsMap.SuperClass;
            }while(clsMap != null);

            //Add the FROM clause to the statement
            this.AddSqlClause(" FROM " + ThisClassMap.RelationalDatabase.QuotationMarksStart + thisClassMap.Table.Name + ThisClassMap.RelationalDatabase.QuotationMarksEnd);

            if (ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MsAccess || ThisClassMap.RelationalDatabase.Vendor == DatabaseVendor.MsSqlServer)
            {
                this.AddSqlClause(" With(nolock)");
            }

            isFirst = true;
            clsMap  = thisClassMap.SuperClass;
            while (clsMap != null)
            {
                this.AddSqlClause("," + clsMap.Table.Name);
                clsMap = clsMap.SuperClass;
            }
            while (clsMap != null)
            {
                ;
            }
            //此语句为SELECT的前部
            this._selecFromClause = this.sql;



            //Add WHERE Clause to the statement
            this.AddSqlClause(" WHERE 1=1 ");
            for (int i = 0; i < thisClassMap.GetKeySize(); i++)
            {
                attrMap = thisClassMap.GetKeyAttributeMap(i);
                //该列是否Primary Key
                if (attrMap.Column.KeyType == ColumnKeyTypes.PrimaryKey)
                {
                    this.AddSqlClause(" AND " + this.clsMap.GetFullyQualifiedName(attrMap.Column.Name) + "=" +
                                      base.clsMap.RelationalDatabase.GetStringParameter(attrMap.Name, i));
                }
            }

            //Add WHERE Clause table.column=superclass_table.column to the selectStatement
            clsMap  = this.clsMap;
            isFirst = true;
            do
            {
                size = clsMap.GetReferenceSize();
                for (int i = 0; i < size; i++)
                {
                    attrMap = clsMap.GetReferenceAttributeMap(i);
                    if (isFirst)
                    {
                        _stringForInherit = this.clsMap.GetFullyQualifiedName(attrMap.Column.Name) +
                                            "=" + this.clsMap.GetFullyQualifiedName(attrMap.Reference.Column.Name);
                        isFirst = false;
                    }
                    else
                    {
                        _stringForInherit += " AND " + this.clsMap.GetFullyQualifiedName(attrMap.Column.Name) +
                                             "=" + this.clsMap.GetFullyQualifiedName(attrMap.Reference.Column.Name);
                    }
                }
                if (this._stringForInherit != null)
                {
                    this.AddSqlClause(" AND " + this._stringForInherit);
                }
                clsMap = clsMap.SuperClass;
            }while (clsMap != null);
        }