2016-11-24 106 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

相关问题