2016-11-24 3 views
0

Ich bin .net Kernanwendung als Windows-Dienste ausgeführt. Also meine Frage ist, wie kann ich den dbcontext im Windows-Dienst für Datenbankoperationen verwenden?Verwenden von dbcontext in .net-Kernanwendung

Unten finden Sie Service Class

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(); 
    } 
} 

und Service-Erweiterung Klasse:

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

Muss ich die Abhängigkeit in Dienstklasse injizieren? Edit: 1 Zunächst muss ich eine Verbindung zur Client-Management-Datenbank, in der eine Tabelle namens Clientsconnectionstring die Verbindungszeichenfolge aller Clients haben und danach muss ich db-Kontext für jeden der Clients erstellen und Windows-Service-Logik ausführen.

+1

Es ist Ihre Wahl, wenn Sie Injektion verwenden oder nicht. also NEIN - das musst du NICHT. aber Sie können das tun, wenn Sie so wählen – Marty

+0

Ich habe meine Frage bearbeitet, können Sie bitte aktualisieren? – Rohit

+0

Es gibt einen Unterschied in "Wie kann ich" und "Wie kann ich" .. es ist breit .. die Antworten werden generisch sein .. und wenn sie spezifisch werden, werden sie wahrscheinlich untersucht werden .. machen Sie ein wenig Forschung, dann Stellen Sie Fragen, die Antworten hervorrufen, die die Gemeinschaft begründen kann. mit dem gesagt, Haben Sie eine Klassenbibliothek csproj? Haben Sie irgendeine Art von Domain Driven Design? –

Antwort

1

Sie können den Kontext bei Bedarf für jede Methode erstellen, die Sie benötigen.

+1

Es ist nicht so einfach, da er auf die Konfiguration dafür zugreifen müsste, was in einer Erweiterungsmethode, die ServiceProvider nicht erweitert oder Zugriff auf das Konfigurationsobjekt ohne Anti-Patterns hat, nicht möglich ist wie Singletons oder Service Locator Muster – Tseng

+0

Welche Art von Konfiguration? – mayu

+0

Ich habe meine Frage bearbeitet, können Sie bitte darauf aktualisieren? – Rohit

Verwandte Themen