예제 #1
0
        public override void OnInserted(DomainObject obj, DataTable table)
        {
            DataContext.Current.OpenLock(QueryLevel.Single);
            var id     = (obj as IEntityObject).GetIdentity();
            var parent = obj.GetValue <IEntityObject>(this.ParentProperty);

            if (SqlContext.GetDbType() == DatabaseType.SQLServer)
            {
                if (parent.IsEmpty())
                {
                    //自身为根
                    DataPortal.Direct(obj.ObjectType, (conn) =>
                    {
                        var sql = string.Format("update dbo.{0} set lft=@lft,rgt=@rgt,rootId=@id where id=@id;", table.Name);
                        conn.Execute(sql, new { lft = 0, rgt = 1, id });
                    });
                }
                else
                {
                    var parentId = parent.GetIdentity();
                    var sql      = _getUpdateLRForInsertSqlBySqlServer(table.Name);
                    //显示开启锁
                    DataPortal.Direct(obj.ObjectType, (conn) =>
                    {
                        conn.Execute(sql, new { id, parentId });
                    });
                }
                return;
            }

            throw new MapperNotImplementedException(obj.ObjectType, "insert");
        }
예제 #2
0
 private string GetSql()
 {
     switch (SqlContext.GetDbType())
     {
     case DatabaseType.SQLServer: return(GetSqlBySQLServer());
     }
     return(null);
 }
예제 #3
0
 private string GetSql(string tableName)
 {
     switch (SqlContext.GetDbType())
     {
     case DatabaseType.SQLServer: return(SQLServer.SqlStatement.GetDropTableSql(tableName));
     }
     return(null);
 }
예제 #4
0
 private static string GetInsertSql(DataTable table)
 {
     switch (SqlContext.GetDbType())
     {
     case DatabaseType.SQLServer: return(GetSqlBySQLServer(table));
     }
     return(null);
 }
예제 #5
0
 private string GetSql()
 {
     switch (SqlContext.GetDbType())
     {
     case DatabaseType.SQLServer: return(SQLServer.SqlStatement.GetIncrementIdentitySql(this.Target));
     }
     return(null);
 }
예제 #6
0
        private ISqlPageTemplate GetTemplate()
        {
            switch (SqlContext.GetDbType())
            {
            case DatabaseType.SQLServer: return(GetSQLBySQLServer());
            }

            return(null);
        }
예제 #7
0
        /// <summary>
        /// 包装标示限定符
        /// </summary>
        /// <returns></returns>
        public static string Qualifier(string name)
        {
            switch (SqlContext.GetDbType())
            {
            case DatabaseType.SQLServer: return(string.Format("[{0}]", name));

            case DatabaseType.MySQL: return(string.Format("`{0}`", name));
            }
            return(name);
        }
예제 #8
0
        /// <summary>
        /// 内部构建
        /// </summary>
        /// <param name="connName"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        private string InternalBuild(DynamicData param)
        {
            string sql = Process(param);

            if (string.IsNullOrEmpty(sql))
            {
                throw new NotSupportDatabaseException(this.GetType().Name, SqlContext.GetDbType());
            }
            return(sql);
        }
 private string GetSql()
 {
     if (this.Target.Type == DataTableType.EntityObject || this.Target.Type == DataTableType.ValueObject)
     {
         switch (SqlContext.GetDbType())
         {
         case DatabaseType.SQLServer: return(GetSqlBySQLServer());
         }
     }
     throw new NotSupportDatabaseException("GetIncrementAssociatedSql - " + this.Target.Type.ToString());
 }
예제 #10
0
 private string GetSql()
 {
     switch (SqlContext.GetDbType())
     {
     case DatabaseType.SQLServer:
     {
         return(SQLServer.SqlStatement.GetSingleLockSql(this.Target));
     }
     }
     return(null);
 }
예제 #11
0
 private string GetSql()
 {
     if (this.Definition.IsCustom)
     {
         return(string.Empty);                         //自定义查询,由程序员自行解析
     }
     switch (SqlContext.GetDbType())
     {
     case DatabaseType.SQLServer: return(GetSqlBySQLServer());
     }
     return(null);
 }
예제 #12
0
        public override string Build(QueryBuilder builder, DynamicData param, DataTable table)
        {
            if (builder.Name == "findParents")
            {
                if (SqlContext.GetDbType() == DatabaseType.SQLServer)
                {
                    return(_getFindParentsSqlBySqlServer(table.Name));
                }

                throw new MapperNotImplementedException(builder.ObjectType, "findParents");
            }
            return(base.Build(builder, param, table));
        }
예제 #13
0
        public override void OnPreDelete(DomainObject obj, DataTable table)
        {
            var id = (obj as IEntityObject).GetIdentity();

            if (SqlContext.GetDbType() == DatabaseType.SQLServer)
            {
                var sql = _getUpdateLRForDeleteSqlBySqlServer(table.Name);
                DataPortal.Direct(obj.ObjectType, (conn) =>
                {
                    var result = conn.Execute(sql, new { id });
                });
                return;
            }

            throw new MapperNotImplementedException(obj.ObjectType, "delete");
        }
예제 #14
0
 private QueryAdapter(string name)
 {
     this.Name       = name;
     _dbType         = SqlContext.GetDbType();
     _dataIsComplete = false;
 }
 public NotSupportDatabaseException(string operation)
     : this(operation, SqlContext.GetDbType())
 {
 }