Как передать ConnectionString из файла appsettings.json в проект библиотеки классов в dot net core 2.2 - PullRequest
0 голосов
/ 22 мая 2019

У меня есть два проекта в моем решении. Одно из них - это угловое ядро ​​2.2, а другое - проект библиотеки классов, содержащий модели предметной области и dbcontext. Я хочу передать строку подключения в dbcontext, чтобы я мог создать базу данных, используя код в первую очередь. это моя строка подключения

"ConnectionStrings": {
"DataConnection": "Server=.;Database=Test;Trusted_Connection=True;MultipleActiveResultSets=true;Integrated Security=True;"

этот код в методе ConfigureService

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContextPool<TestContext>(context => context.UseSqlServer(Configuration.GetConnectionString("DataConnection")));
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

}

А это мой DBContext

public class TestContext : DbContext
{
 public CCPGV1Context(string connectionString):base(connectionString)
    {

    }

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        base.OnModelCreating(modelBuilder);
    }
}

Я новичок в коде первого подхода, а также в ядре dot net. Пожалуйста, направьте меня, что мне делать!

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

В качестве параметра необходимо передать интерфейс IConfiguration из Microsoft.Extensions.Configuration в конструктор класса Startup (назовите его как угодно, например, я назову его _configuration).

Затем замените эту строку

services.AddDbContextPool<TestContext>(context => context.UseSqlServer(Configuration.GetConnectionString("DataConnection")));

на эту:

services.AddDbContext<TestContext>(options => options.UseSqlServer(_configuration.GetConnectionString("DataConnection")));

После этого добавьте этот конструктор к вам TestContext class:

public TestContext(DbContextOptions<TestContext> options) : base(options)
        {

        }

Это для начального класса DBContextOptions с конфигурацией, установленной для TestContext в Startup.cs

0 голосов
/ 22 мая 2019

Поскольку вы конфигурируете строку подключения как службу, вы можете просто внедрить конструктор вашего DbContext класса следующим образом:

public class TestContext : DbContext 
  { 
  public TestContext(DbContextOptions<TestContext> options):base(options)
         {

         }
   }
...