Пример #1
0
        public List<String> CheckMappingTableIsExist( IDbCommand cmd, String db, List<String> existTables, MappingClass mapping ) {
            foreach( KeyValuePair<String, EntityInfo> kv in mapping.ClassList ) {
                EntityInfo entity = kv.Value;
                if (entity.Database.Equals( db ) == false) continue;

                if (!isTableCreated( existTables, entity )) {
                    existTables = createTable( entity, cmd, existTables, mapping.ClassList );
                }
            }
            return existTables;
        }
Пример #2
0
        public List<String> CheckMappingTableIsExist( IDbCommand cmd, String db, List<String> existTables, MappingClass mapping )
        {
            foreach (DictionaryEntry entry in mapping.ClassList) {
                EntityInfo entity = entry.Value as EntityInfo;
                if (entity.Database.Equals( db ) == false) continue;

                if (!isTableCreated( existTables, entity )) {
                    existTables = createTable( entity, cmd, existTables, mapping.ClassList );
                }
            }
            return existTables;
        }
Пример #3
0
        public void CheckTable( MappingClass mapping, String db )
        {
            logger.Info( "[access] begin check table" );

            OleDbConnection connection = DataFactory.GetConnection( _connectionString, this.DatabaseType ) as OleDbConnection;
            connection.Open();
            IDbCommand cmd = new OleDbCommand();
            cmd.Connection = connection;
            object[] restrictions = new object[4];
            restrictions[3] = "TABLE";
            DataTable oleDbSchemaTable = connection.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, restrictions );
            foreach (DataRow row in oleDbSchemaTable.Rows) {
                existTables.Add( row["TABLE_NAME"].ToString() );
                logger.Info( "table found:" + row["TABLE_NAME"].ToString() );
            }
            existTables = new AccessTableBuilder().CheckMappingTableIsExist( cmd, db, existTables, mapping );
            connection.Close();
        }
        public void CheckTable( MappingClass mapping, String db )
        {
            logger.Info( "[sqlserver] begin check table" );
            SqlConnection connection = new SqlConnection( _connectionString );
            connection.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = connection;
            cmd.CommandText = "SELECT OBJECT_NAME(id) as name FROM sysobjects WHERE xtype='U' AND OBJECTPROPERTY(id, 'IsMSShipped') = 0";
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read()) {
                existTables.Add( reader["name"].ToString() );
                logger.Info( "table found:" + reader["name"].ToString() );
            }
            reader.Close();
            existTables = new SqlServerTableBuilder().CheckMappingTableIsExist( cmd, db, existTables, mapping );

            connection.Close();
        }
Пример #5
0
        private static void cacheInterceptor(MappingClass map)
        {
            List <object> interceptor = DbConfig.Instance.Interceptor;

            for (int i = 0; i < interceptor.Count; i++)
            {
                Dictionary <String, object> info = interceptor[i] as Dictionary <String, object>;
                String       asmName             = info["AssemblyName"].ToString();
                String       typeName            = info["TypeFullName"].ToString();
                IInterceptor obj = rft.GetInstance(asmName, typeName) as IInterceptor;
                if (obj == null)
                {
                    throw new Exception("load ORM interceptor error( Assembly:" + asmName + ", Type:" + typeName + ")");
                }

                map.InterceptorList.Add(obj);
            }
        }
Пример #6
0
        private static void createDB(MappingClass map)
        {
            logger.Info("begin create database ...");

            DatabaseType dbtype = DatabaseType.Access;

            IDatabaseChecker databaseChecker = DataFactory.GetDatabaseChecker(dbtype);

            databaseChecker.DatabaseType = dbtype;

            logger.Info("CheckDatabase");
            databaseChecker.CheckDatabase();

            logger.Info("CheckTable");
            databaseChecker.CheckTable(map, DbConfig.DefaultDbName);

            logger.Info("GetTables");
            map.TableList = databaseChecker.GetTables();
        }
Пример #7
0
        public void CheckTable( MappingClass mapping, String db )
        {
            logger.Info( "[mysql] begin check table" );
            IDbConnection connection = DataFactory.GetConnection( _connectionString, this.DatabaseType );
            connection.Open();

            IDbCommand cmd = connection.CreateCommand();
            cmd.CommandText = "show tables";

            IDataReader reader = cmd.ExecuteReader();

            while (reader.Read()) {
                existTables.Add( reader[0].ToString() );
                logger.Info( "table found£º" + reader[0].ToString() );
            }

            reader.Close();
            existTables = new MySqlTableBuilder().CheckMappingTableIsExist( cmd, db, existTables, mapping );

            connection.Close();
        }
Пример #8
0
        public static MappingClass loadByReflection()
        {
            logger.Info("loadByReflection");

            IList asmList = DbConfig.Instance.AssemblyList;

            MappingClass map = new MappingClass();

            for (int i = 0; i < asmList.Count; i++)
            {
                Assembly assembly = ObjectContext.LoadAssembly(asmList[i].ToString());
                map.AssemblyList[asmList[i].ToString()] = assembly;
                Type[] typeArray = ObjectContext.FindTypes(asmList[i].ToString());
                foreach (Type type in typeArray)
                {
                    ResolveOneType(map, type);
                }
                logger.Info("loaded assembly: " + assembly.FullName);
            }

            logger.Info("FinishPropertyInfo");
            FinishPropertyInfo(map.ClassList);


            logger.Info("cacheInterceptor");
            cacheInterceptor(map);

            logger.Info("AccessorUtil.Init");

            MetaList list = new MetaList(map.AssemblyList, map.ClassList);

            map.FactoryList = AccessorUtil.Init(list);

            checkMultiDB(map);

            return(map);
        }
Пример #9
0
        //------------------------------------------------------------------------------
        private static void ResolveOneType( MappingClass map, Type t )
        {
            map.TypeList.Add( t.FullName, t );
            //if (!t.IsAbstract && ( t.IsSubclassOf( typeof( ObjectBase ) ) || t is IEntity )) {
            //    map.ClassList[t.FullName] = EntityInfo.GetByType( t );
            //    logger.Info( "Loading Type : " + t.FullName );
            //}
            // 1029
            logger.Info( "Loading Type : " + t.FullName );

            if (rft.IsInterface( t, typeof( IEntity ) ) && !OrmHelper.IsEntityBase( t )) {
                map.ClassList.Add( t.FullName, EntityInfo.GetByType( t ) );
            }
        }
Пример #10
0
        private static void createDB( MappingClass map )
        {
            logger.Info( "begin create database ..." );

            DatabaseType dbtype = DatabaseType.Access;

            IDatabaseChecker databaseChecker = DataFactory.GetDatabaseChecker( dbtype );
            databaseChecker.DatabaseType = dbtype;

            logger.Info( "CheckDatabase" );
            databaseChecker.CheckDatabase();

            logger.Info( "CheckTable" );
            databaseChecker.CheckTable( map, DbConfig.DefaultDbName );

            logger.Info( "GetTables" );
            map.TableList = databaseChecker.GetTables();
        }
Пример #11
0
        private static void checkMultiDB( MappingClass map )
        {
            if (DbConfig.Instance.IsCheckDatabase == false) {
                logger.Info( "skip check database" );
                return;
            }

            if (map.TableList == null) map.TableList = new List<String>();

            if (DbConfig.Instance.ConnectionStringTable == null || DbConfig.Instance.ConnectionStringTable.Count == 0) {
                createDB( map );
                return;
            }

            logger.Info( "begin check database..." );

            foreach (KeyValuePair<String, ConnectionString> kv in DbConfig.Instance.GetConnectionStringMap()) {

                String connectionString = kv.Value.StringContent;
                if (strUtil.IsNullOrEmpty( connectionString ))
                    throw new NotImplementedException( lang.get( "exConnectionString" ) + ":" + kv.Key );

                DatabaseType dbtype = kv.Value.DbType;

                IDatabaseChecker databaseChecker = DataFactory.GetDatabaseChecker( dbtype );
                databaseChecker.ConnectionString = connectionString;
                databaseChecker.DatabaseType = dbtype;

                logger.Info( "CheckDatabase" );
                databaseChecker.CheckDatabase();

                logger.Info( "CheckTable" );
                databaseChecker.CheckTable( map, kv.Key );

                logger.Info( "GetTables" );
                map.TableList.AddRange( databaseChecker.GetTables() );

            }

            logger.Info( "end check database..." );
        }
Пример #12
0
        private static void cacheInterceptor( MappingClass map )
        {
            List<object> interceptor = DbConfig.Instance.Interceptor;
            for (int i = 0; i < interceptor.Count; i++) {
                Dictionary<String, object> info = interceptor[i] as Dictionary<String, object>;
                String asmName = info["AssemblyName"].ToString();
                String typeName = info["TypeFullName"].ToString();
                IInterceptor obj = rft.GetInstance( asmName, typeName ) as IInterceptor;
                if (obj == null) {
                    throw new Exception( "load ORM interceptor error( Assembly:" + asmName + ", Type:" + typeName + ")" );
                }

                map.InterceptorList.Add( obj );
            }
        }
Пример #13
0
        public static MappingClass loadByReflection()
        {
            logger.Info( "loadByReflection" );

            IList asmList = DbConfig.Instance.AssemblyList;

            MappingClass map = new MappingClass();
            for (int i = 0; i < asmList.Count; i++) {
                Assembly assembly = ObjectContext.LoadAssembly( asmList[i].ToString() );
                map.AssemblyList[asmList[i].ToString()] = assembly;
                Type[] typeArray = ObjectContext.FindTypes( asmList[i].ToString() );
                foreach (Type type in typeArray) {
                    ResolveOneType( map, type );
                }
                logger.Info( "loaded assembly: " + assembly.FullName );
            }

            logger.Info( "FinishPropertyInfo" );
            FinishPropertyInfo( map.ClassList );

            logger.Info( "cacheInterceptor" );
            cacheInterceptor( map );

            logger.Info( "AccessorUtil.Init" );

            MetaList list = new MetaList( map.AssemblyList, map.ClassList );
            map.FactoryList = AccessorUtil.Init( list );

            checkMultiDB( map );

            return map;
        }
Пример #14
0
 public static void Clear()
 {
     _instance = null;
 }
Пример #15
0
 public static void Clear()
 {
     _instance = null;
 }
Пример #16
0
        public static void createDB(MappingClass map, DatabaseType DBType, string StringContent, string db)
        {
            logger.Info("begin create database ...");
            String connectionString = StringContent;
            if (strUtil.IsNullOrEmpty(connectionString))
                throw new NotImplementedException(lang.get("exConnectionString") + ":" + db);

            DatabaseType dbtype = DBType;

            IDatabaseChecker databaseChecker = DataFactory.GetDatabaseChecker(dbtype);
            databaseChecker.ConnectionString = connectionString;
            databaseChecker.DatabaseType = dbtype;

            logger.Info("CheckDatabase");
            databaseChecker.CheckDatabase();

            logger.Info("CheckTable");
            databaseChecker.CheckTable(map, db);

            logger.Info("GetTables");
            map.TableList.AddRange(databaseChecker.GetTables());
        }