2016-12-27 6 views
1

私はマルチ環境設定(DEV、TEST、PREPROD、PROD)で作業しており、環境間で簡単に切り替えることができるテストを書く必要があります。C#マルチ環境設定のデータベースコンテキスト

私のテストではデータベースルックアップが必要です。現在、私は各環境用のDBContextを作成しています。 Image of solution explorer

は現在、私のテストはとても同様

を正しいデータベースコンテキストの作成を担当している:

if (environment.ToLower().Equals("test")) { 
      var arkiv = new TransformContentCenter_TestEntities1(); 
      var invoicesNotProcesseed = entries 
       .Where(row => !arkiv.Brevarkiv.Any(row1 => row1.ReferenceNumber.Equals(row.invoiceNo) && row1.LetterType=="Invoice")).ToList(); 

私はこれが悪いコードスタイルであることを承知していますし、私が作成する方法を探しています環境処理を担当するデータベース層。しかし、どのような設定がこの状況を処理するためのベストプラクティスであり、それを私のソリューションに実装する方法はわかりません。すべてのヘルプに感謝される:)

+0

あなたのテストは実際に実際のデータベースのルックアップを行っていますか?ちょっと興味があるんだけど。 – Amn

+0

@Amnどうしてですか?どのようにそれをテストしますか?すべての私のdbルックアップはメモリデータベースでサポートされているため、SQLiteを使用してビルドサーバ上でテストされ、実行されます。 SQL Serverがデプロイされると、SQL Serverが使用されます。 –

+0

複数の環境で単体テストを実行する必要があるのはなぜですか?あなたのアプリケーションが正しく機能していることを確認するためには、devに対してこれを行う必要があります。あなたのアプリは環境の概念を持たず、展開時に必要な変数を与えられるべきです。一度構築してどこにでも展開できます。 –

答えて

1

あなたが設定ファイルを使用することができますあなたがあまりにもApp.configファイルのために同じことを達成するためにサードパーティ製のアドイン(またはこのhttp://gunnarpeipman.com/2013/11/using-web-config-transforms-with-app-config-files/のようなもの)を使用することができますthis.See https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx

のために変換します。

テストを実行するときに探すことができるビルド設定に応じて、キー/値(接続文字列など)を変換できます。