Как получить одно решение с двумя проектами .Net Core и использовать оба файла Startup.cs для настройки служб? - PullRequest
0 голосов
/ 19 сентября 2018

Я уверен, что, вероятно, я неправильно это проектирую, но у меня есть решение с двумя проектами.Один проект - это доступ к данным, а другой - веб-приложение.Оба .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 } }

1 Ответ

0 голосов
/ 19 сентября 2018

@ Llazar и @Tseng выше в значительной степени ответили на проблему.Это не может быть сделано.То, что я пытался сделать, не было чем-то нормальным.Я не понимал, но класс context может быть включен в основной проект, и это будет передаваться в основном проекте DI.Я могу установить строку подключения в главном проекте Startup.cs и получить ее из appsettings.json или пользовательских секретов или хранилищ ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...