2020年8月20日 星期四

訊光科技 EEP 不同資料庫來源錯誤.

訊光科技 EEP 不同資料庫來源錯誤. 
己設定 infocommand 中的 EEPalias 為 ORACLE 的資料庫連線名稱. 可是他在
EFWCFModule\EEPAdpter\Provider.cs 中的 500 行上下
string where = packetInfo.ToQueryString(ClientInfo, sql);
中有一段程式嗎他重組 where 條件時還是使用登入時所使用的設定(SQLSERVER)

我在  public DataSet GetDataSet(string assemblyName,xxxxxxxx)
中加入了以式碼.動態LOAD *.DLL 檔去找他的infoCommand.EEPAlias的設定..如果有指就修改ClientInfo.Database 為 EEPAlias 名稱. 程式碼如下.

            var assemblyFile = PackageProvider.GetAssemblyFile(ClientInfo.Solution, assemblyName);
            Assembly SampleAssembly = Assembly.LoadFrom(assemblyFile);
            var componentType = SampleAssembly.GetType(string.Format("{0}.Component", assemblyName));  //因為所有東西是在專案 Component.cs下
            var myobj = Activator.CreateInstance(componentType);
            foreach (FieldInfo fi in componentType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance ))
            {
                if (fi.Name.ToUpper().CompareTo(commandName.ToUpper()) == 0)
                {
                    IDbCommand cmd =(IDbCommand)fi.GetValue(myobj);
                    if (cmd is InfoCommand)
                    {
                        if (! string.IsNullOrEmpty((cmd as InfoCommand).EEPAlias))
                        {
                            ClientInfo.Database = (cmd as InfoCommand).EEPAlias; //改這個就可以 因為 packetInfo.ToQueryString 中他會用DataBase重取 Database TYPE
                        }
                    }
                }
            }

沒有留言:

張貼留言