こんばんわ。
志水です。
毎度、お世話になっております。
毎度、レベルの低い質問で申し訳ないのですが教えてください。。
DB接続の切替なのですがどうすればいいのかわからず困っています。
1番目に本番用と、2番目にテスト用の2つの接続先を定義しているのですが
Form上でのDBアクセスは特に問題なくうまく切り替わっているのですが
今回、下記のようなTaskを使って実行した際に
Task内で実行した処理がテスト用でなく1つ目の本番用につながってしまうのです。
Task内の処理の最初に下記のようなFormでも使用している
DBのセレクター処理を呼び出して事前に変更していて
デバッグでもデータソースはテスト用を指しているように見えるのですけど・・・
実際は本番用のデータソースに接続しているようです。
根本的にやり方が間違っているのでしょうか?
以上、ご教授宜しくお願い致します。
◆DB切替処理
/// <summary>
/// 接続先選択
/// </summary>
/// <param name="KenCd"></param>
/// <returns></returns>
public static SelectableDataSourceProxyWithDictionary DataBaseSelector()
{
String basicDataSourceName = ConfigurationManager.AppSettings["BasicDataSourceName"];
//データソース名。デフォルトは基本データソース名
String datasourceNm = basicDataSourceName;
if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["DefaultKenCd"]))
{
datasourceNm = ConfigurationManager.AppSettings["DynamicDataSourceName"] + GenericUtilities.Utilities.StaticReadonlyDefine.UNDVAR + ConfigurationManager.AppSettings["DefaultKenCd"];
}
//テストモードの場合
if (CDef.OPE_MODE.TEST.Code.Equals(ConfigurationManager.AppSettings["TEST_MODE"]))
{
datasourceNm = datasourceNm + CDef.OPE_MODE.TEST.Alias;
}
SelectableDataSourceProxyWithDictionary _dataSourceDict = new SelectableDataSourceProxyWithDictionary();
//DBの接続先をセットする
_dataSourceDict.SetDataSourceName(datasourceNm);
return _dataSourceDict;
}
◆Task実行
public void ExecutePrintShokuinDaicho(String RdlxFilePath, String DataHomePath, SessionUserDto sessionUserDto, String ResultLogFile, String RequestUrlAbsolutePath)
{
var task = Task.Factory.StartNew(() =>
{
_BatchLogic.TaskPrintShokuinDaicho(RdlxFilePath, DataHomePath, sessionUserDto, ResultLogFile, RequestUrlAbsolutePath);
}, TaskCreationOptions.LongRunning);
}
◆Task内で実行しているクラスでデータソース定義を宣言時に行っている
[Implementation]
public class BatchLogic
{
/// <summary>
/// データソース選択クラス
/// </summary>
protected SelectableDataSourceProxyWithDictionary _dataSourceDict = WebCommonDBLogic.DataBaseSelector();