Как добавить провайдера Entity Framework 6 в код?

Я использую Entity Framework 6 в приложении C#, и он отлично работает. При создании модели создается файл app.config со всей необходимой конфигурацией. Теперь мне не нравится что-то в app.config, поэтому я использую построитель строки подключения. Мне удалось удалить из файла app.config все, кроме этого:

<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>

Если я удалю это, это не сработает. Итак, как я могу перевести эту конфигурацию в код С#? Как мне это сделать? Я просмотрел конфигурацию на основе кода (http://msdn.microsoft.com/en-us/data/jj680699), однако это не помогло.

Мой частичный класс, который создает строку подключения, выглядит так:

public partial class LogEntities
    {
        public LogEntities(string serverName)
            : base(GetConnectionString(serverName))
        {
        }

        public static string GetConnectionString(string serverName)
        {
            // Specify the provider name, server and database.
            const string databaseName = "_LOG";

            // Initialize the connection string builder for the underlying provider.
            SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
            {
                DataSource = serverName,
                InitialCatalog = databaseName,
                IntegratedSecurity = true,
                MultipleActiveResultSets = true
            };

            // Initialize the EntityConnectionStringBuilder.
            System.Data.EntityClient.EntityConnectionStringBuilder entityBuilder = new System.Data.EntityClient.EntityConnectionStringBuilder();
            entityBuilder.Provider = "System.Data.SqlClient";

            // Set the provider-specific connection string.
            entityBuilder.ProviderConnectionString = sqlBuilder.ToString();

            // Set the Metadata location.
            entityBuilder.Metadata = @"res://*/myproject.LogModel.csdl|res://*/myproject.LogModel.ssdl|res://*/myproject.LogModel.msl";

            return entityBuilder.ConnectionString;
        }
    }

Заранее благодарю за любую помощь.


person Flave    schedule 06.11.2013    source источник
comment
Ответ в ссылке которую вы дали   -  person Tino Mclaren    schedule 10.03.2014


Ответы (1)


В EF6 вы можете использовать конфигурацию Code Base. Дополнительные сведения см. в этой статье. Он показывает, как установить фабрику соединений по умолчанию (используйте метод SetDefaultConnectionFactory). Чтобы установить поставщика, вы используете метод SetProviderServices.

person Pawel    schedule 06.11.2013
comment
Вы связали его со статьей на msdn, о которой он уже упоминал. Также в этой статье не рассказывается, как создавать строки соединений sql. - person Bob; 12.02.2014
comment
@Bob - я не знаю, пропустил ли я ссылку или вопрос был обновлен ссылкой после того, как я добавил ответ. Интересно то, что статья, на которую я указал, на самом деле содержит фрагмент, показывающий, как установить фабрику соединений по умолчанию. В любом случае, я немного улучшил ответ и дал несколько советов, которые должны упростить работу. - person Pawel; 13.02.2014
comment
@Pawel +1 Ваш ответ правильный, код находится на полпути по предоставленной вами ссылке и фактически позволяет освободить его App.config от элемента ‹entityFramework внизу, как он и просил. Выручил меня, большое спасибо. - person Tino Mclaren; 10.03.2014