Имя строки подключения и Entity Framework

поэтому я использую Entity Framework в течение некоторого времени (на v5 для моего основного проекта). Один вопрос, который у меня всегда был, но никогда не мог найти окончательного ответа - должно ли имя моей строки соединения соответствовать имени моего DbContext, чтобы EF работал правильно?

похоже, что так (и я никогда не делал ничего по-другому), но я бы предпочел не предоставлять "волшебную строку" в моей сети.config для работы EF. Было бы лучше, на мой взгляд, держать класс defaultconnection как имя и Эф соединяет инуде.

вот ссылки из моего интернета.конфигурации (некоторые имена изменены):

<connectionStrings>
    <add name="MyContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

...и...дальше вниз...

<entityFramework>
    <contexts>
      <context type="MyProject.Path.To.MyContext, MyProject.Path.To, Version=1.0.0.0, Culture=neutral">
        <databaseInitializer type="MyProject.Path.To.MyInitializer, MyProject" />
      </context>
    </contexts>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
</entityFramework>

любое понимание было бы оценено.

1 ответов


один вопрос у меня всегда был, но никогда не мог найти окончательного ответ - это имя моей строки подключения должны соответствовать имя моего DbContext для того, чтобы EF работал правильно?

нет. Вы можете передать имя строки соединения в базовый конструктор для DbContext, т. е.

public class MyDbContext : DbContext
{
    public MyDbContext()
      : base("MyConnectionStringName")
    {

    }
}

есть также конструктор на DbContext что происходит DbConnection аргумент, если вы предпочитаете создать соединение себе.

наконец, вы можете предоставить свою собственную реализацию IDbConnectionFactory и используйте его вместо default LocalDbConnectionFactory указанной в app.config. Вы изменяете его в конфигурации или устанавливаете его во время выполнения следующим образом:

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();