static void loadSysInstance()
        {
            if (string.IsNullOrEmpty(rootPath))
            {
                return;
            }

            Assembly            asse = null;
            IDataServerProvider dsp  = null;
            Type dspType             = null;

            string likeNameOfDll = @"DJ\.DotNetCore";

            if (!isDotNetCore())
            {
                likeNameOfDll = @"DJ\.Framework";
            }
            codeCompiler = loadInterfaceInstance <IInstanceCodeCompiler>(likeNameOfDll, null, ref asse);
            if (null == codeCompiler)
            {
                return;
            }

            codeCompiler.SetRootPath(rootPath);
            Type[] types = asse.GetTypes();
            Type   t     = typeof(IDataServerProvider);

            foreach (var item in types)
            {
                if (item.IsImplementInterface(t))
                {
                    try
                    {
                        dsp     = (IDataServerProvider)Activator.CreateInstance(item);
                        dspType = dsp.GetType();
                    }
                    catch (Exception)
                    {
                        //throw;
                    }
                    break;
                }
            }

            Func <string, Type> action = filePath =>
            {
                if (!File.Exists(filePath))
                {
                    return(null);
                }
                Type     type2     = null;
                Assembly assembly1 = Assembly.LoadFrom(filePath);
                Type[]   ts        = null;
                try
                {
                    ts = assembly1.GetTypes();
                }
                catch { }
                if (null == ts)
                {
                    return(type2);
                }
                string fName = typeof(IDataServerProvider).FullName;
                foreach (Type item in ts)
                {
                    if (null != item.GetInterface(fName))
                    {
                        type2 = item;
                        break;
                    }
                }
                return(type2);
            };

            string f = "";

            if (-1 != likeNameOfDll.ToLower().IndexOf("framework"))
            {
                f = Path.Combine(DJTools.RootPath, "System.DJ.DotNetCore.CodeCompiler.dll");
            }
            else
            {
                f = Path.Combine(DJTools.RootPath, "System.DJ.Framework.CodeCompiler.dll");
            }

            Type type1 = action(f);

            Type[] dsTypes = new Type[] { dspType, type1 };

            Assembly asse1 = null;

            DbHelper = loadInterfaceInstance <IDbHelper>("DbHelper", new Type[] { typeof(DbHelper) }, ref asse1);
            if (null == DbHelper)
            {
                DbHelper = new DbHelper();
            }

            Assembly asse2 = null;

            dataServerProvider = loadInterfaceInstance <IDataServerProvider>("DataServerProvider", dsTypes, ref asse2);
            if (null == dataServerProvider)
            {
                dataServerProvider = dsp;
            }
            DbHelper.dataServerProvider = dataServerProvider;

            Assembly asse3 = null;

            dbConnectionState          = loadInterfaceInstance <IDbConnectionState>("ConnectionState", null, ref asse3);
            DbHelper.dbConnectionState = dbConnectionState;
        }
Exemple #2
0
        DataTable IDbHelper.query(object autoCall, string sql, List <DbParameter> parameters, bool EnabledBuffer, Action <DataTable> resultAction, ref string err)
        {
            DataTable dt         = new DataTable();
            string    msg        = "";
            AutoCall  autoCall_1 = autoCall as AutoCall;

            Action action = () =>
            {
                basicExecForSQL.Exec(autoCall_1, sql, parameters, ref msg, result => { }, cmd =>
                {
                    IDataServerProvider dataServerProvider = ((IDbHelper)this).dataServerProvider;
                    Data.Common.DataAdapter da             = dataServerProvider.CreateDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    try
                    {
                        da.Fill(ds);
                        if (0 < ds.Tables.Count)
                        {
                            dt = ds.Tables[0];
                        }
                    }
                    catch (Exception ex)
                    {
                        msg = ex.ToString();
                        //throw;
                    }
                    if (null != resultAction)
                    {
                        if (EnabledBuffer)
                        {
                            if (null != m_SyncContext)
                            {
                                m_SyncContext.Post(PostDataTable, new object[] { resultAction, dt });
                            }
                            else
                            {
                                resultAction(dt);
                            }
                        }
                        else
                        {
                            resultAction(dt);
                        }
                    }
                    if (!string.IsNullOrEmpty(msg))
                    {
                        throw new Exception(msg);
                    }
                    return(dt);
                });
            };

            if (EnabledBuffer)
            {
                Task task = new Task(() =>
                {
                    Thread.Sleep(50);
                    action();
                });
                task.Start();
            }
            else
            {
                action();
            }
            err = msg;
            return(dt);
        }