2016-11-24 4 views
0

Я запускаю приложение .net core как службы Windows. Итак, мой вопрос: как я могу использовать dbcontext в службе Windows для операций с базой данных?Использование dbcontext в .net-приложении ядра

Ниже класса обслуживания

public class SendMailHostService : WebHostService 
{ 
    private readonly EventLog _log = new EventLog("Application") { Source = "Application" }; 
    public SendMailHostService(IWebHost host) : base(host) 
    { 

    } 

    protected override void OnStarted() 
    { 
     Console.WriteLine("Asp.net service started."); 
     Console.ReadLine();  
    } 

    protected override void OnStarting(string[] args) 
    { 
     Console.WriteLine("Asp.net service starting."); 
     Console.ReadLine(); 
    } 
} 

и расширение класса обслуживания:

public static class SendMailHostServiceExtensions 
{ 
    public static void RunAsSendMailService(this IWebHost host) 
    { 
     var webHostService = new SendMailHostService(host); 
     webHostService.ServiceName = "LMS.WinService.SendEmail"; 
     ServiceBase.Run(webHostService); 
    } 
} 

мне нужно вводить зависимость в классе обслуживания ли? Редактировать: 1 Первоначально мне нужно подключиться к базе данных управления клиентами, в которой таблица с именем Clientsconnectionstring будет иметь строку подключения всех клиентов, а после этого мне нужно создать контекст db для каждого из клиентов и выполнить логику службы Windows.

+1

Это ваш выбор, если вы используете инъекцию или нет. поэтому НЕТ - вам НЕ нужно. но вы можете это сделать, если вы так решите – Marty

+0

Я отредактировал мой вопрос, можете ли вы обновить его? – Rohit

+0

есть разница в «Как я» и «Как я могу» .. она широка .. ответы будут обобщенными .. и если они станут конкретными, они, вероятно, будут тщательно изучены .. сделайте небольшое исследование, затем задавать вопросы, которые вызывают ответы, которые сообщество может обосновать. с этим сказал: У вас есть библиотека классов csproj? у вас есть какой-нибудь проект, управляемый доменом? –

ответ

1

Вы можете создать контекст по запросу в каждом методе, в котором вы нуждаетесь.

+1

Это не так просто, поскольку ему нужно получить доступ к конфигурации для него, что вам нелегко сделать в методе расширения, который не расширяет ServiceProvider или не имеет доступа к объекту конфигурации без падений к анти-шаблонам как синглтоны или шаблон локатора обслуживания – Tseng

+0

Какая конфигурация? – mayu

+0

Я отредактировал мой вопрос, не могли бы вы обновить его? – Rohit

Смежные вопросы