2016-06-20 7 views
0

を作成するときに、私は次のようEntityConnectionが私のEFプロジェクトで接続インスタンス

using (EntityConnection con = new EntityConnection("name=HCMConnection")) 

を実行した場合、それは例外

が指定された名前付き接続が構成で検出されないいずれかのスロー例外をスローし、 ありませんEntityClientプロバイダで使用することを目的としたもの、または有効でないもの。

接続文字列は、Web.Configのであり、それは私がそれ、それはのSqlClientプロバイダのように何をしていない疑いがあるん

<add name="HCMConnection" connectionString="Data Source=DEV-PROG-01; 
    Initial Catalog=HCM; 
    user id=HCMUser; 
    password=*******; 
    MultipleActiveResultSets=True" 
    providerName="System.Data.SqlClient" /> 

を以下のように見えますか?

ありがとうございました。

答えて

0

私はあなたが持っている必要があると思う(あなたのアプリのタイプに合った設定クラスを置き換えてください)。接続文字列名を動作させるパラメータとして取ることのできるEntityConnectionコンストラクタはありません。

ただし、手動で行うのではなくdbcontextに接続を管理させる方が良いでしょう。このコンストラクタは接続名だけをとることができます。

using (MyDbContext con = new MyDbContext ("HCMConnection")) 

さらに良いあなたのコンテキストクラスで

public MyDbContext() 
     : base("HCMConnection") 
0

ポール は、私の場合はSettingsClass何であるかは明らかではないが、私はその接続を使用するように同じコンテキストを使用することにしました:

public ActionResult Education(ModelHCMContainer model) 
    {... 

と次のことを実行

using (DbCommand cmd = model.Database.Connection.CreateCommand()) 
      { 
       model.Database.Connection.Open(); 
       try 
       { 
        cmd.CommandText = String.Concat("select ed.*,", ... 
         "order by ed.DateStart DESC"); 
        using (var _reader = cmd.ExecuteReader()) 
        { 
         using (ModelHCMContainer context = new ModelHCMContainer()) 
         { 
          var records = ((IObjectContextAdapter)context).ObjectContext.Translate<HCMApplication.Models.POCO.Profile.HCMEducationPOCO>(_reader); 
          items = records.ToList(); 
         } 
        } 

       } 
       finally 
       { 
        model.Database.Connection.Close(); 
       } 
      } 

正常に動作しているようです。おかげさまで

関連する問題