Entity Framework на самом деле не считывает строки подключения из Web.config.
Я начал новый проект и создал контекст:
public class FooContext : DbContext
{
public FooContext() :
base("Foo")
{
}
// DbSets here
}
Затем я добавил строку подключения к проектам Web.config:
<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>
<connectionStrings>
<add name="Foo" providerName="System.Data.SqlClient" connectionString="Data Source=Foo;Initial Catalog=Foo;Integrated Security=False;User Id=foo;Password=foo;MultipleActiveResultSets=True" />
</connectionStrings>
<appSettings>
...
Я включил миграции, сгенерировал первоначальную миграцию и попытался обновить базу данных. Через некоторое время обновление не позволяет утверждать, что он не может подключиться к базе данных. Поэтому я вытащил DLL проекта в LINQPad и выполнил следующее:
var context = new FooContext();
context.Database.Connection.ConnectionString.Dump();
И я получаю следующий вывод:
Data Source=.\SQLEXPRESS;Initial Catalog=Foo;Integrated Security=True;MultipleActiveResultSets=True
Он пытается подключиться к LocalDB, полностью игнорируя мою строку подключения. Поэтому я попытался быть более явным в конструкторе контекста, используя "name=Foo"
вместо "Foo"
.
public FooContext() :
base("name=Foo")
{
}
Для чего это стоит, мне никогда не приходилось делать это раньше. У меня даже есть другие проекты в том же решении, где я просто передал имя строки подключения, и они отлично работали.
Я возвращаюсь обратно в LINQPad и снова запускаю код, и теперь получаю исключение:
No connection string named 'Foo' could be found in the application config file.
У меня полная потеря. Я создал такие проекты, как эта 100 раз, и у меня никогда не было проблем. Поскольку это может быть важно, я запускаю последнюю Entity Framework, 6.1.3. Любые идеи, что здесь возможно?