訊光科技 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
}
}
}
}
{
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
}
}
}
}
沒有留言:
張貼留言