8

私は前後に検索しましたが、必要なものを手に入れることができなかったようです。これが遅れて回答された場合は申し訳ありません。ディスカッションへのリダイレクトは私にとって良いことです。

これがシナリオです。私は、上司から Microsoft Visual Foxpro (MS は 2015 年にサポートを終了します) から .Net C# に移行するように指示されました。優れた基礎とベスト プラクティスの採用のために、私はまず学習し、適切な情報をつなぎ合わせてから、コーディングを開始することにしました。これは2年目です。

私たちは、50社以上のクライアントに給与計算アウトソーシングサービスを提供するビューロー会社です。現在、各クライアントには独自のデータベースがあります。データベースには、完全に同一の構造を持つテーブルがあります。

私は初心者です。.net の世界ではまったく新しい。

私はデータテーブル、データリーダーを使用して生のSQLから始めましたが、私の研究では、これを思いとどまらせるいくつかの議論がありました. 多くの人は、Entity Framework が目的を果たすべきだと考えていました。ただし、特に複雑なクエリが含まれる場合は、アプローチを混在させることができます。

誰かが、50 以上の同一データベースで Entity Framework を実装できる「よく読んだ」ものを教えてくれませんか。各データベースは完全に独立しており、他のデータベースとは何の関係もありません。ユーザーがログインするとき、給与を処理する必要があるクライアントを選択すると、EF はそのデータベースをポイントします。

4

3 に答える 3

4

EF は、データベースのデータを操作するために 2 つの異なる情報を必要とします。

1) データベース スキーマ: これはコンパイル済みコードとしてアプリケーションに含まれており、通常は実行時に変更できません。

2) 接続文字列: これは実行時に、通常は構成ファイルから提供されます。

あなたの場合、すべてのデータベースが同じスキーマを持っているため、1 つのデータベースをモデル化するだけで、他のすべてのデータベースで機能します。

変更したい部分は接続文字列です。これにより、データベースを検索する方法が EF に通知され、実行時に提供できます。

DbContext接続文字列をパラメーターとして受け取るコンストラクターのオーバーロードがあります。MSDN: DbContext Constructor (String)

フレームワークには、接続文字列を作成するのに役立つクラスもあります。

MSDN: EntityConnectionStringBuilder Class

MSDN: Connection String Builders

于 2013-04-02T09:01:54.673 に答える
3

とてもシンプルです

私が持っていた、

//WMSEntities is conection string name in web.config 
//also the name of Entitiframework
public WMSEntities() : base("name=WMSEntities") 
        {
        }

edmx フォルダーの自動生成された Model.Context.cs に既にあります

実行時に複数のデータベースに接続するために、同じファイル Model.Context.cs で以下のように接続文字列をパラメーターとして受け取る別のコンストラクターを作成しました

   public WMSEntities(string connStringName)
            : base("name=" + connStringName)
        {
        }

ここで、たとえば Web.Config に他の接続文字列を追加しました

  <add name="WMSEntities31" connectionString="data source=TESTDBSERVER_NAME;
       initial catalog=TESTDB;userid=TestUser;password=TestUserPW/>

<add name="WMSEntities" connectionString="data source=TESTDBSERVER_NAME12;
     initial catalog=TESTDB12;userid=TestUser12;password=TestUserPW12/>

次に、データベースに接続するときに、connetionString名前をパラメーターとして渡す以下のメソッドを呼び出します

  public static List<v_POVendor> GetPOVendorList(string connectionStringName)
  {    
      using (WMSEntities db = new WMSEntities(connectionStringName))
      {               
          vendorList = db.v_POVendor.ToList();                 

      }
  }
于 2014-01-03T01:47:51.763 に答える