Я уверен, что, вероятно, я неправильно это проектирую, но у меня есть решение с двумя проектами.Один проект - это доступ к данным, а другой - веб-приложение.Оба .Net Core 2.1.Я хотел бы иметь параметры конфигурации и внедрение зависимостей для обоих, но я понимаю, что это может быть невозможно.
Код ниже находится в моем доступе к данным Startup.cs
, за исключением того, что это, очевидно, не основной проект запуска,также это библиотека классов, которая меняет вещи.Он не использует Startup.cs
, и этот файл - единственное место, которое я видел в .Net Core для настройки конфигурации и служб для внедрения зависимостей.Где еще я могу это настроить?
Так можно ли настроить DI с библиотекой классов?Я создаю доступ к данным как неправильный тип проекта?Я бы хотел использовать другой способ вместо жесткого кодирования строки подключения, например appsettings.json или хранилище ключей, чтобы получить строки подключения при доступе к данным, но я не знаю другого способа установить это.Единственный способ, который я вижу, - это жестко закодировать строку в сам контекстный класс.
Любое понимание того, что я делаю неправильно, будет оценено, спасибо.
C#
public class Startup
{
public Startup(
IConfiguration configuration,
IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
configuration = builder.Build();
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ISDeptContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("PublicDatabase"));
});
}
public void Configure(IApplicationBuilder app)
{
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
}
}