C# 带Sqlite的AdoJobStore

C# 带Sqlite的AdoJobStore,c#,sqlite,quartz.net,C#,Sqlite,Quartz.net,我终于能够为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 = de

我终于能够为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;" />
您可能遇到的另一个问题是与提供商(1.0.94.0)以及Quartz.Net中定义的提供商(1.0.88.0)的兼容性。你可以找到这些信息

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

<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SQLiteDelegate, Quartz" />
Install-Package System.Data.SQLite.Core
<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>


在github上。

谢谢!我会尽快测试,然后回来找你。有道理!别担心。我添加了一个工作示例。请参阅更新。干杯。@Pedram:如果这个答案对你有好处,请随意接受/投票:-)抱歉@LeftyX,我突然被拖到另一个项目。我一回来就会测试这个。我没有忘记这一点。这对我很有效,只是我必须将提供程序设置为“SQLite”