日期:2014-05-16  浏览次数:20492 次

c#数据库迁移

我们在实际应用开发中,经常会用到数据库迁移,以使我们开发的应用具有可迁移性,下面我采用反射技术,运用工厂模式编写了一个数据库迁移的小例子,如下:

本例中实现了  SQLSERVER 和 MySQL 的迁移


工厂中封装的主要方法可属性


        获取程序集所在文件路径的成员变量:
        private static readonly string AssemblyPath = ConfigurationManager.AppSettings["AssemblyPath"];


        获取程序集命名空间的成员变量:
        private static readonly string AssemblyName = ConfigurationManager.AppSettings["AssemblyName"];

创建引用命名空间的方法:
        private static object CreateObject(string AssemblyPath, string classNamespace)
        {
            try
            {
                object objType = Assembly.LoadFile(AssemblyPath).CreateInstance(classNamespace);
              
                return objType;
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
     

 创建DbDataReader实例的方法:
        public static DbDataReader CreaterDbDataReader()
        {
            string ClassNamespace = AssemblyName + "DataReader";
            object objType = CreateObject(AssemblyPath, ClassNamespace);
            return (DbDataReader)objType;
        }

        创建DbConnection实例的方法:
        public static DbConnection CreateDbConnection()
        {
            string ClassNamespace = AssemblyName + "Connection";
            object objType = CreateObject(AssemblyPath, ClassNamespace);
            return (DbConnection)objType;
        }
        
         创建DbCommand实例的方法:
        public static DbCommand CreateDbCommand()
        {
            string ClassNamespace = AssemblyName + "Command";
            object objType = CreateObject(AssemblyPath, ClassNamespace);
            return (DbCommand)objType;
        }

         创建DbDataAdapter实例的方法:
        public static DbDataAdapter CreateDbDataAdapter()
        {
            string ClassNamespace = AssemblyName + "DataAdapter";
            object objType = CreateObject(AssemblyPath, ClassNamespace);
            return (DbDataAdapter)objType;
        }



下面是封装的一些基本的数据访问抽象类的一些方法和属性:

获取连接字符串的成员变量:
        public static string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
  


        /执行查询语句,返回SqlDataReader的方法:    
        public static DbDataReader ExecuteReader(string strSQL)