gpt4 book ai didi

c# - 带有 Sqlite 的 AdoJobStore

转载 作者:IT王子 更新时间:2023-10-29 06:31:06 24 4
gpt4 key购买 nike

我终于能够为 Sql Server 设置 ADOJobStore,但我也希望它能与 Sqlite 一起使用,但我还没有让它工作。这是我的 quartz.config 的一部分,我为我的 AdoJobStore 设置了属性:

# to use the sqlite store, uncomment all of this 
quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
quartz.jobStore.dataSource = default
quartz.dataSource.default.connectionString = Data Source=postbag-jobs.db;Version=3;Foreign Keys=ON;
quartz.jobStore.tablePrefix = QRTZ_
quartz.jobStore.clustered = false
quartz.jobStore.lockHandler.type = Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz
quartz.dataSource.default.provider = SQLite-10
quartz.jobStore.useProperties = true

我已经单独创建了 Sqlite 数据库并将其放在我的服务器的工作目录中。然而,当服务初始化时,我得到一个 SchedulerException 说:

Could not Initialize DataSource: default

有了这个InnerException:

Error while reading metadata information for provider 'SQLite-10'
Parameter name: providerName

我必须为我的服务器提供 Sqlite .DLL 吗?因为我不需要为 Sql Server 这样做。

最佳答案

如果你想将 SqliteQuartz.net 一起使用,你必须使用这些键:

<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
<add key="quartz.jobStore.useProperties" value="true" />
<add key="quartz.jobStore.dataSource" value="default" />
<add key="quartz.jobStore.tablePrefix" value="qrtz_" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SQLiteDelegate, Quartz" />
<add key="quartz.dataSource.default.provider" value="SQLite-10" />
<add key="quartz.dataSource.default.connectionString" value="Data Source=postbag-jobs.db;Version=3;" />

我注意到您的 driverDelegateType key 不正确。你应该使用 SQLiteDelegate:

<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SQLiteDelegate, Quartz" />

您需要安装 ADO.NET provider还有(nuget):

Install-Package System.Data.SQLite.Core

您可能遇到的另一个问题是与您的提供程序 (1.0.94.0) 和 Quartz.Net 中定义的提供程序 (1.0.88.0) 的兼容性。您可以找到信息 here .

要解决此问题,只需将此部分添加到您的app.config:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="1.0.88.0" newVersion="1.0.94.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

可以找到一个工作示例 here在 github 上。

关于c# - 带有 Sqlite 的 AdoJobStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487925/

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