2016-11-24 85 views
0

我正在運行.net核心應用程序作爲Windows服務。所以我的問題是如何在Windows服務中使用dbcontext進行數據庫操作?在.net核心應用程序中使用dbcontext

下面是服務類

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的表將具有所有客戶端的連接字符串,之後我需要爲每個客戶端創建數據庫上下文並執行Windows服務邏輯。

+1

這是你的選擇,如果你使用注射或不。所以沒有 - 你不必這樣做。但你可以這樣做,如果你這樣選擇 – Marty

+0

我已經編輯了我的問題,你可以請更新嗎? – Rohit

+0

「我該怎麼做」和「我怎麼能」有一個區別..它是廣泛的..答案將是通用的..如果他們得到具體的,他們可能會被仔細檢查..做一點研究,然後提出援引社區可以證實的答案的問題。與此說,你有一個類庫csproj?你有什麼樣的域名驅動設計? –

回答

1

您可以在需要的每種方法中按需創建上下文。

+1

這並不是那麼容易,因爲他需要訪問它的配置,在擴展方法中不能輕易做到這一點,該擴展方法不擴展ServiceProvider或無權訪問配置對象,而不會陷入反模式像單身人士或服務定位模式 – Tseng

+0

什麼樣的配置? – mayu

+0

我編輯了我的問題,你能否更新它? – Rohit

相關問題