2017-06-14 13 views
0

EFモデルにデータベース認証情報を動的に提供しようとしています。以下のアプローチは、Database Firstを使用するときに過去に働いていました。いくつかの同じような問題がありますが、この問題を解決するものはありません。私はここで何が欠けていますか?EFコードの最初のキーワードはサポートされていません: 'プロバイダ'

private const string ProviderName = "System.Data.SqlClient"; 

var SqlConnectionStringBuilder = new SqlConnectionStringBuilder { 
    DataSource = this.ServerName, 
    InitialCatalog = this.DatabaseName, 
    IntegratedSecurity = true 
}; 
var EntityConnectionStringBuilder = new EntityConnectionStringBuilder { 
    Provider = ProviderName, 
    ProviderConnectionString = SqlConnectionStringBuilder.ToString() 
}; 
using(var db = new AuditingContext(EntityConnectionStringBuilder.ToString())) 
{ 
    var session = new Session() { 
    }; 
    db.Sessions.Add(session); 
    //ArgumentException occurs here 
    //Keyword not supported: 'provider'. 
} 

DbContext

public class AuditingContext: DbContext { 
    public DbSet <Session> Sessions { get; set; } 
    public DbSet <Cause> Causes { get; set; } 
    public AuditingContext(string connectionStringName): base(connectionStringName) {} 
} 

接続文字列

provider=System.Data.SqlClient;provider connection string=\"Data Source=localhost;Initial Catalog=TEST_DATABASE;Integrated Security=True\" 
+0

EF5 +のDbContextは、エンティティ接続文字列ではなく、通常の接続文字列であるとは思いません。 – DevilSuichiro

+0

そのように簡単です。 @DevilSuichiroありがとうございました。 –

答えて

0

をDevilSuichiroにより指摘したように、EF5 +ためDbContextは、接続文字列ではなくEntityConnectionStringあります。これにより問題が解決されます。

var connString = "provider=System.Data.SqlClient;provider connection string=\"Data Source=localhost;Initial Catalog=TEST_DATABASE;Integrated Security=True\""; 
using(var db = new AuditingContext(connString)) 
{ 
    //... 
} 
-1

私は2016年 SQL Serverへのコードファーストアプローチをテストするために、コンソールアプリケーションを私の最初れたconnectionStringをして使っていたこと

<add name="TerminalA" connectionString="Data 
Source=192.168.1.104;Database=ABC;Integrated Security=false;User 
ID=sa;[email protected];" providerName="System.Data.SqlClient" /> 
0

ように使用:

add name="MyCodeFirstDb" connectionString=" 
Data Source=MyServer; 
Initial Catalog=MyCodeFirstDb; 
Provider=SQLNCLI11.1; 
Integrated Security=SSPI; 
Auto Translate=False;" 

私は私を入れてを"entityFramework"セクションの後の "connectionStrings"セクション。

LINQクエリを作成するときに私が得たエラー:

私は削除

"キーワードプロバイダが認識されない" "プロバイダ= SQLNCLI11.1を;"

私は、エラーしまっ

は、私が "偽AutoTranslate =;" を削除

を "キーワード自動翻訳認識されません"

私はクエリを実行することができ、私のデータベースが作成されました。

関連する問題