net core 1 (dnx 4.5.1) с корпоративной библиотекой 6 - настройка строки подключения

У меня большие проблемы с запуском блока доступа к данным корпоративной библиотеки с net core 1 (DNX 4.5.1)

Как я могу настроить строку подключения по умолчанию для entlib

my appsettings.json "ConnectionString": "Сервер = localhost \ sqlexpress; Начальный каталог = слепой; Идентификатор пользователя = слепой; Пароль = слепой"

Вот моя проблема (нет строки подключения по умолчанию) База данных db = DatabaseFactory.CreateDatabase ();

как я могу передать настройки приложения ConnectionString в базу данных entlib

любая помощь будет принята с благодарностью


person vipcode    schedule 31.03.2016    source источник


Ответы (2)


Я знаю, что это старый вопрос, но у меня аналогичная установка (но с использованием .NET Core 2.0), и мне потребовалось некоторое время, чтобы выяснить, как установить соединение с базой данных по умолчанию без использования web.config для управления им.

Что я сделал, так это включил базу данных по умолчанию и все строки подключения в appsettings.json, а затем в свой класс Startup я прочитал appsettings.json в объект, который я определил для хранения имени базы данных по умолчанию и строк подключения и настроил по умолчанию + именованная база данных с использованием DatabaseFactory.SetDatabase.

DatabaseFactory.SetDatabases () Определение

public class DataConfiguration
{
    public string DefaultDatabase { get; set; }
    public List<ConnectionStringSettings> ConnectionStrings { get; set; }
}



public class Startup
{
    public Startup(IConfiguration configuration)
    {
        //Get the Database Connections from appsettings.json
        DataConfig = configuration.Get<DataConfiguration>(); 

        var defaultDb = DataConfig.ConnectionStrings?.Find(c => c.Name == DataConfig.DefaultDatabase);
        DatabaseFactory.SetDatabases(() => new SqlDatabase(defaultDb.ConnectionString), GetDatabase);

        Configuration = configuration;
    }

    public Database GetDatabase(string name)
    {
        var dbInfo = DataConfig.ConnectionStrings.Find(c => c.Name == name);

        if (dbInfo.ProviderName == "System.Data.SqlClient")
        {
            return new SqlDatabase(dbInfo.ConnectionString);
        }

        return new MySqlDatabase(dbInfo.ConnectionString);
    }

}

person Nick Galvin    schedule 03.04.2018

Всякий раз, когда есть документация, я всегда предлагаю прочитать ее, потому что обычно она хороша. Это один из таких примеров. Ознакомьтесь с "Начало работы с ASP .NET 5 и Entity Framework 6 ". Есть несколько вещей, которые вам нужно сделать, чтобы убедиться, что вы правильно настроены.

Настройте строку подключения и DI.

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(string nameOrConnectionString) 
        : base(nameOrConnectionString)
    {
    }
}

Также обратите внимание на путь в конфигурации, он, кажется, отличается от вашего.

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped((_) => 
        new ApplicationDbContext(
            Configuration["Data:DefaultConnection:ConnectionString"]));

    // Configure remaining services
}
person David Pine    schedule 06.04.2016
comment
Почему случайное отрицательное голосование, если это не сработало для вас - возможно, вам стоит рассказать, почему именно? - person David Pine; 18.08.2016
comment
Я предполагаю, что ссылка и примеры относятся к Entity Framework, а OP ссылается на Enterprise Library. - person PMOrion; 23.06.2017