WebApi и Console DBContext
У нас есть webapi, который использует первый подход к базе данных, используя структуру сущностей.
Теперь мы пытаемся включить консольное приложение, которое использует тот же DBContext из WebApi для проверки некоторых других данных.
в app.config:
<connectionStrings>
<add name="DB"
connectionString="Server=localhost;Initial Catalog=example;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
providerName="System.Data.EntityClient"/>
При запуске program.cs я делаю следующий код:
private static void InitializeDBContext()
{
Console.Write("Initializing Database Connection...");
var connectionString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
var dbrequestContext = new ConsoleRequestContext(connectionString, DateTime.Now, DateTime.Now);
dbContext = new OurDBContext(dbrequestConterxt);
Console.WriteLine("completed.");
}
Ошибка System.ArgumentException: 'Ключевое слово не поддерживается:' сервер '.' То же самое касается переключения с сервера на источник данных в строке подключения.
Есть идеи, как правильно подойти к этому сценарию?
Обновление я попробовал следующее: Как вы используете внедрение зависимостей в консольном приложении asp.net?
private static IServiceProvider serviceProvider;
public Program(IApplicationEnvironment env, IRuntimeEnvironment runtime)
{
var services = new ServiceCollection();
ConfigureServices(services);
serviceProvider = services.BuildServiceProvider();
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; set; }
private void ConfigureServices(IServiceCollection services)
{
//Console.WriteLine(Configuration["Data:DefaultConnection:ConnectionString"]);
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<DbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
}
но его поговорка не имеет конструктора с 0 аргументами.