Esempio n. 1
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;
        }
Esempio n. 2
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();
 }
Esempio n. 3
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);
            }
        }
Esempio n. 4
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();
 }
Esempio n. 5
0
 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();
 }
Esempio n. 6
0
 public void CheckTable( MappingClass mapping, String db ) {
     logger.Info( "[MySQL] 加载数据库已有表" );
     IDbConnection connection = DataFactory.GetConnection(_connectionString, this.DatabaseType);
     connection.Open();
     OrmHelper.initCount++;
     LogManager.GetLogger("Class:System.Data.MysqlDatabaseChecker Method:CheckTable").Info("数据库连接已开启【" + OrmHelper.initCount + "】");
     IDbCommand cmd = connection.CreateCommand();
     cmd.CommandText = "show tables";
     IDataReader reader = cmd.ExecuteReader();
     while (reader.Read()) {
         existTables.Add( reader[0].ToString() );
         logger.Info( "加载表:" + reader[0].ToString() );
     }
     reader.Close();
     existTables = new MySqlTableBuilder().CheckMappingTableIsExist( cmd, db, existTables, mapping );
     connection.Close();
     OrmHelper.clostCount++;
     LogManager.GetLogger("Class:System.Data.MysqlDatabaseChecker Method:CheckTable").Info("数据库连接关闭成功【" + OrmHelper.clostCount + "】");
 }
Esempio n. 7
0
 public void CheckTable( MappingClass mapping, String db ) {
     logger.Info( "[sqlserver] begin check table" );
     SqlConnection connection = new SqlConnection( _connectionString );
     connection.Open();
     OrmHelper.initCount++;
     LogManager.GetLogger("Class:System.Data.SQLServerDatabaseChecker Method:CheckTable").Info("数据库连接已开启【" + OrmHelper.initCount + "】");
     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();
     OrmHelper.clostCount++;
     LogManager.GetLogger("Class:System.Data.SQLServerDatabaseChecker Method:CheckTable").Info("数据库连接关闭成功【" + OrmHelper.clostCount + "】");
 }
Esempio n. 8
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();
     OrmHelper.initCount++;
     LogManager.GetLogger("Class:System.Data.AccessDatabaseChecker Method:CheckTable").Info("数据库连接已开启【" + OrmHelper.initCount + "】");
     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();
     OrmHelper.clostCount++;
     LogManager.GetLogger("Class:System.Data.AccessDatabaseChecker Method:CheckTable").Info("数据库连接关闭成功【" + OrmHelper.clostCount + "】");
 }
Esempio n. 9
0
        public static MappingClass loadByReflection()
        {
            logger.Info("通过反射机制加载程序集...");
            IList        asmList = DbConfig.Instance.AssemblyList;
            MappingClass map     = new MappingClass();

            try
            {
                for (int i = 0; i < asmList.Count; i++)
                {
                    Assembly assembly = ObjectContext.LoadAssembly(asmList[i].ToString());
                    logger.Info("程序集: " + assembly.FullName);
                    map.AssemblyList[asmList[i].ToString()] = assembly;
                    Type[] typeArray = ObjectContext.FindTypes(asmList[i].ToString());
                    foreach (Type type in typeArray)
                    {
                        ResolveOneType(map, type);
                    }
                }
                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);
                try
                {
                    checkMultiDB(map);
                }
                catch (Exception ex)
                {
                    logger.Info("初始化数据库出现错误:" + ex.Message);
                }
            }
            catch (Exception ex)
            {
                logger.Info("初始化Orm对象出现错误:" + ex.Message);
            }
            return(map);
        }
Esempio n. 10
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...");
 }
Esempio n. 11
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();
 }
Esempio n. 12
0
 public static void checkMultiDB(MappingClass map)
 {
     if (DbConfig.Instance.IsCheckDatabase == false)
     {
         logger.Info("跳过检查数据库...");
         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("开始检查数据库...");
     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...");
 }
Esempio n. 13
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);
     }
 }
Esempio n. 14
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("加载类 : " + t.FullName);
     if (rft.IsInterface(t, typeof(IEntity)) && !OrmHelper.IsEntityBase(t))
     {
         map.ClassList.Add(t.FullName, EntityInfo.GetByType(t));
     }
 }
Esempio n. 15
0
 public static MappingClass loadByReflection()
 {
     logger.Info("通过反射机制加载程序集...");
     IList asmList = DbConfig.Instance.AssemblyList;
     MappingClass map = new MappingClass();
     try
     {
         for (int i = 0; i < asmList.Count; i++)
         {
             Assembly assembly = ObjectContext.LoadAssembly(asmList[i].ToString());
             logger.Info("程序集: " + assembly.FullName);
             map.AssemblyList[asmList[i].ToString()] = assembly;
             Type[] typeArray = ObjectContext.FindTypes(asmList[i].ToString());
             foreach (Type type in typeArray)
             {
                 ResolveOneType(map, type);
             }
         }
         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);
         try
         {
             checkMultiDB(map);
         }
         catch (Exception ex)
         {
             logger.Info("初始化数据库出现错误:" + ex.Message);
         }
     }
     catch (Exception ex)
     {
         logger.Info("初始化Orm对象出现错误:" + ex.Message);
     }
     return map;
 }