gpt4 book ai didi

entity-framework - 如何让 Quartz.NET AdoJobStore 与 Entity Framework 一起工作?

转载 作者:行者123 更新时间:2023-12-04 08:32:17 29 4
gpt4 key购买 nike

  • .NET 4.51
  • Entity Framework 6.x

  • 我有一个单独的项目/程序集,它包装了核心 Quartz.NET 功能。我想以编程方式配置 Quartz.NET 以将信息保存到 SQL Server。由于这是一个单独的程序集,因此 App.config 非常小,我想传入一个连接字符串。这是 完整 应用程序配置:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </configSections>
    <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    </entityFramework>
    </configuration>

    这是我用来配置 Quartz.NET 的代码:
    properties["quartz.scheduler.instanceName"] = "My Scheduler";
    properties["quartz.scheduler.instanceId"] = "MySchedulerId";
    properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
    properties["quartz.jobStore.useProperties"] = "true";
    properties["quartz.jobStore.dataSource"] = "default";
    properties["quartz.dataSource.default.connectionString"] = aConnectionString;
    properties["quartz.dataSource.default.provider"] = "System.Data.SqlClient";
    properties["quartz.jobStore.tablePrefix"] = "QRTZ_";

    aConnectionString 的值为:

    测试
    "Data Source=.\\SQLEXPRESS;Initial Catalog=xxxxx;Integrated Security=True;MultipleActiveResultSets=True"

    生产
    server=sql.server.com;User Id=xxxx;password=xxx;Persist Security Info=True;database=xxxx" providerName="System.Data.SqlClient

    但是,当我尝试调用 GetScheduler() 时,我收到以下错误消息:
    Could not Initialize DataSource: default

    内部异常有:
    {"There is no metadata information for provider 'System.Data.SqlClient'\r\nParameter name: providerName"}

    那么我在这里错过了什么?我必须改变什么才能使这项工作?

    最佳答案

    Quartz 不支持插入 Entity Framework 基础设施,它在没有外部框架的情况下工作。 Quartz 的提供者不同于 ADO.NET 的提供者基础结构。您可以在 Example 13 中看到 AdoJobStore 的编程配置示例。 .所以正确的值应该是 SqlServer-20 .

    您还可以通过提供参数 来配置连接字符串。连接字符串名称 Quartz 会从 connectionStrings 部分寻找那个命名的连接字符串。

    关于entity-framework - 如何让 Quartz.NET AdoJobStore 与 Entity Framework 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524624/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com