Entity Framework 4.1を使用する単純なASP.NET MVC 3テストWebアプリケーションをまとめました。私のDBContextは次のようになります:EF - データベース接続 - SQL Server認証を使用する予定ですが、Windows認証で試してみることにしました。
public class EFDbContext : DbContext
{
public DbSet<TestParent> TestParents { get; set; }
public DbSet<TestChild> TestChildren { get; set; }
}
私はEFがEFDbContextという名前の接続文字列を探すと予想しています。以下は、ローカル環境でweb.configに含まれる内容です。
<connectionStrings>
<add name="EFDbContext"
connectionString="data source=.\SQLEXPRESS;Initial Catalog=testDB;Integrated Security=SSPI;MultipleActiveResultSets=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
接続文字列にユーザー名もパスワードも入力していません。私の理解によれば、EFはデータベース接続にWindows認証を使用します。私のローカル環境では、すべてが期待通りに機能します。
今、私はWebホストからサーバーにこのWebアプリケーションをリリースすると、SQL Server認証(Webホストの制限 - 十分に)に切り替える必要があります。だから私はこのように見えるように接続文字列を調整しました:
<connectionStrings>
<remove name="LocalSqlServer" />
<add name="EFDbContext"
connectionString="Data Source = localhost\SQLEXPRESS; Initial Catalog = testDB; User Id = dbUser; Password = dbPassword; Integrated Security = SSPI; MultipleActiveResultSets = True; Persist Security Info=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
これは私が意識して作った唯一の変更です。残念ながら、これはもう機能しません。表示されるエラーメッセージは、データベース接続がWindows認証を使用して試行され、SQL Server認証を使用して試行されることを示します(エラーメッセージはドイツ語ですが、ホストユーザーが作成したWindowsユーザーの1人)。
エラーメッセージには、接続文字列の初期カタログ部分に指定したデータベース名も含まれています。これは私には、EFDbContextという名前の接続文字列が実際にEFによって読み込まれて使用されていることを明確に示しているようです。
私の問題は、私が問題に近づくための出発点を見つけることさえできないということです。全体は私にとってはブラックボックスのようだ。 EFはSQL Server認証を試み、フォールバックとしてWindows認証に切り替えますか?または、EFをSQL Server認証に強制するために、設定ファイルの設定を変更する必要がありますか?
私のアプリケーションをさらにスケールアップするための賢明な方法を考え出すことができませんでした。私のGoogle検索ではどこにいても検索できなかったし、壁に何度も頭を打つことも解決策を提供しなかった。だから、どんな助けでも大歓迎です。
基本的に私は接続文字列に関して何をしているのかわからないからです。私はそれを取り出して、それは治療のように動作します。あなたの助けをありがとう、David! – ralfonso