2017-11-03 20 views
0

私のEntity Frameworkを含む別のデータレイヤーを構築しました。私は私の現在のプロジェクトでは、この別のプロジェクトへの参照をした...私は私の現在のMVCコントローラに以下を追加しました:存在するプロジェクトを参照しているときに接続文字列が見つかりません

using SMCD_DataLayer; 

    [HttpPost] 
     public ActionResult Login(LoginViewModel lv) 
     { 
      var db = new SMCD_DataStoreEntities(); 
      var found = db.Users.Select(x => x.Username == lv.userId && x.Password == lv.passWord).Any(); 

      if (ModelState.IsValid) 
      { 
       if (!found) 
       { 
        lv.errorMsg = "User ID is invalid!"; 
       } 
       else 
       { 
        return RedirectToAction("IntroPage", "Devices"); 
       } 
      } 

      return View(lv); 
     } 

私SMCD_DataStoreEntitiesがSMCD_DataLayerに住んでいるが、このコントローラはSMCD_Portalプロジェクトに住んでいます。見つかった行のVARの

...私は次のエラーメッセージを取得しています:

System.InvalidOperationExceptionが発生した HRESULT = 0x80131509 メッセージ=「SMCD_DataStoreEntities」という名前なしの接続文字列は、アプリケーションの設定ファイルに見つかりませんでした。

SMCD_Datalayerの接続文字列は、現在のプロジェクトで参照していますが、SMCD_Portalプロジェクトに存在する必要がありますか?

これはSMCD_Portal

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> 
    </startup> 
    <connectionStrings> 
    <add name="SMCD_DataStoreEntities" connectionString="metadata=&quot;res://*/SMCD DataStore.csdl|res://*/SMCD DataStore.ssdl|res://*/SMCD DataStore.msl&quot;;provider=System.Data.SqlClient;provider connection string=&quot;data source=KARL-LT\SQLEXPRESS;initial catalog=SMCD_DataStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 
+0

関連するコードを追加してください。現在提供しているコードのいずれも接続文字列を示していません。また、web.config(または関連リソース)からの接続文字列も提供していません。 **実際の接続文字列情報を削除するには、ホスト、db名、ユーザー名またはパスワード**を知る必要はありません**。 –

+0

私はあなたにそれを示すことができると確信しています –

+0

私の主な質問は...エンティティフレームワークは別のプロジェクトに住んでいますか、それとも私の現在のプロジェクトで私のコントローラがそれを使用していますか? –

答えて

4

でアプリケーションによって使用される、またはいずれかの参照アセンブリによって使用されている任意の.configの設定を私のコントローラの生活を覚えて、SMCD_DataLayerにApp.configファイルに住んでいる接続文字列であります一般に、メインアプリケーションの.configファイルに存在する必要があります。

同じことが接続文字列に適用されます。

したがって、メインアプリケーションの.configファイルにこれらの接続文字列を入れて、問題なく使用する必要があります。

関連する問題