Не удается разрешить символ GetConnectionstring - PullRequest
2 голосов
/ 01 апреля 2020

У меня есть библиотека классов. NET Core 3.0. Я впервые работаю с. NET Core

Я хочу подключиться к базе данных.

https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings показывает точно , как это сделать.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.configuration.configurationextensions.getconnectionstring?view=dotnet-plat-ext-3.1 показывает метод, который существует в Microsoft.Extensions.Configuration пространстве имен

Я не могу получить к нему доступ.

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;  //no underlines and imported via Nuget

namespace Core.Cms.DAL
{
    public class Entities : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {  optionsBuilder.UseSqlServer(Microsoft.Extensions.Configuration.GetConnectionString(ConnectionString.SqlServerExpress));

        }
    }
}

Снимок экрана

enter image description here

Почему у меня нет метода Microsoft.Extensions.Configuration.GetConnectionString()?

edit

Перезапущенный райдер - та же проблема

Entities.cs (17, 45): [CS0234] Имя типа или пространства имен GetConnectionString не существует в пространство имен «Microsoft.Extensions.Configuration» (отсутствует ссылка на сборку?)

1 Ответ

4 голосов
/ 01 апреля 2020

Вы должны использовать интерфейс IConfiguration. Вы можете получить доступ к форме конфигурации DI следующим образом

private readonly IConfiguration _configuration;
public Entities(IConfiguration configuration)
{
    _configuration = configuration
}

, а затем использовать _configuration.GetConnectionString(ConnectionString.SqlServerExpress) вместо Microsoft.Extensions.Configuration.GetConnectionString()

optionsBuilder.UseSqlServer(_configuration.GetConnectionString(ConnectionString.SqlServerExpress));

, если вы используете Asp. Net Базовое веб-приложение. Это лучший способ настроить DbContext в при запуске class

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}
public IConfiguration Configuration { get; set; }
services.AddDbContext<Entities>(options =>
{
    options.UseSqlServer(Configuration.GetConnectionString(ConnectionString.SqlServerExpress));
});

Обновление

, если вы не используйте DI, к которому вы можете получить доступ к IConfiguration вручную.

сначала вы должны установить эти пакеты

  • Microsoft.Extensions.Configuration.Json

  • Microsoft.Extensions.Configuration.FileExtensions

, затем построить IConfiguration

IConfiguration configuration = new ConfigurationBuilder()
   .AddJsonFile("appsettings.json", true,true)
   .Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString(ConnectionString.SqlServerExpress));

...