我想测试Quartz.NET 3.0 for .NET Core的SQL数据库功能.不幸的是,我无法StdSchedulerFactory正确配置,我总是在调用时遇到以下异常StdSchedulerFactory.GetScheduler:
System.ArgumentOutOfRangeException:
There is no metadata information for provider 'SqlServer-20'
Parameter name: providerName
at Quartz.Impl.AdoJobStore.Common.DbProvider.GetDbMetadata(String providerName)
at Quartz.Impl.AdoJobStore.Common.DbProvider..ctor(String dbProviderName, String connectionString)
at Quartz.Impl.StdSchedulerFactory.<Instantiate>d__66.MoveNext()
Run Code Online (Sandbox Code Playgroud)
我已使用以下值配置工厂:
var configuration = new NameValueCollection
{
{ "quartz.jobStore.type", "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" },
{ "quartz.jobStore.driverDelegateType", "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" },
{ "quartz.jobStore.tablePrefix", "QRTZ_" },
{ "quartz.jobStore.dataSource", "default" },
{ "quartz.dataSource.default.connectionString", "Server=(localdb)\\mssqllocaldb;Database=QuartzTest;Trusted_Connection=True;MultipleActiveResultSets=true" },
{ "quartz.dataSource.default.provider", "SqlServer-20" },
{ "quartz.jobStore.useProperties", "true" },
{ "quartz.serializer.type", "json" }
};
var schedulerFactory = new StdSchedulerFactory(configuration);
Run Code Online (Sandbox Code Playgroud)
如您所见,我目前正在瞄准LocalDB(v12.0.2000).我也在SQL Server …
我通过按快捷键意外激活了ReSharper 的内部模式(2017.1.3).如何禁用此模式?我在R#选项菜单或GlobalSettingsStorage.DotSettings文件中找不到任何条目.
我正在 TSQL 中编写一个存储过程,它使用事务和游标。我想知道是否应该将CLOSEandDEALLOCATE放在 TRY 块中 - 这些语句会抛出异常吗?
我的代码结构如下:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
DECLARE myCursor CURSOR LOCAL STATIC FORWARD_ONLY READ_ONLY FOR
SELECT -- Select statement left out for brevity's sake
BEGIN TRY
OPEN myCursor
FETCH NEXT FROM myCursor -- INTO statement left out for brevity's sake
WHILE @@FETCHSTATUS = 0
BEGIN
-- Here I process each item in the cursor
-- and then fetch the items for the next loop run
FETCH NEXT FROM …Run Code Online (Sandbox Code Playgroud) 根据维基百科关于 UTF-16 的文章,“...[UTF-16] 也是唯一与 ASCII 不兼容的网络编码。” (在摘要末尾。)该声明指的是 HTML 标准。这是错误的说法吗?
我主要是一个 C#/.NET 开发人员,.NET 以及 .NET Core 在内部使用 UTF-16 来表示字符串。我很确定 UTF-16 是 ASCII 的超集,因为我可以轻松编写显示所有 ASCII 字符的代码:
public static void Main()
{
for (byte currentAsciiCharacter = 0; currentAsciiCharacter < 128; currentAsciiCharacter++)
{
Console.WriteLine($"ASCII character {currentAsciiCharacter}: \"{(char) currentAsciiCharacter}\"");
}
}
Run Code Online (Sandbox Code Playgroud)
当然,控制字符会弄乱控制台输出,但我认为我的陈述很清楚:16 位的低 7 位char采用相应的 ASCII 代码点,而高 9 位为零。因此 UTF-16 应该是 .NET 中 ASCII 的超集。
我试图找出为什么 HTML 标准说 UTF-16 与 ASCII 不兼容,但似乎他们只是这样定义它:
ASCII 兼容编码是任何非 UTF-16 编码的编码。
我找不到任何解释为什么 UTF-16 …
我有以下代码:
public class SampleClass<T, TCollection> where TCollection : class, IList<T>, IReadOnlyList<T>
{
private readonly TCollection _collection;
public SampleClass() : this(new List<T>()) { }
public SampleClass(TCollection collection)
{
_collection = collection;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,包含默认构造函数的行public SampleClass() : this(new List<T>()) { }无法编译.错误消息说:参数1:无法从'System.Collections.Generic.List'转换为'TCollection'.
为什么会这样?List<T>实际上满足了我对TCollection泛型的所有限制:它是一个实现IList<T>和的类IReadOnlyList<T>.
非常感谢你的帮助.
编辑:更新了代码,因为它包含错误.
我想要一种快速通用的方法来检查标记为 的枚举值是否FlagsAttribute有效。为此,我创建了一个名为 的类,EnumInfo<T>该类通过按位或运算枚举的所有不同值来计算其静态构造函数中的标志模式。然后,该IsValidFlagsValue方法通过与标志模式执行按位 AND 比较来简单地检查提供的值。
考虑以下 C# 代码
// This code requires C# 7.3
public static class EnumInfo<T> where T : Enum, IConvertible
{
// This field is calculated in the static constructor
public static readonly ulong FlagsPattern;
public static bool IsValidFlagsValue(this T enumValue)
{
// The actual problem is here: ToUInt64 allocates (because of internal boxing?)
var convertedUInt64Value = enumValue.ToUInt64(null);
return (FlagsPattern & convertedUInt64Value) == convertedUInt64Value;
}
}
Run Code Online (Sandbox Code Playgroud)
我的实际问题如下:为了重用此代码,我将枚举值转换为类型ulong。但是,内部分配 24 …
c# ×4
.net ×2
sql-server ×2
.net-core ×1
ascii ×1
enums ×1
exception ×1
generics ×1
html ×1
memory ×1
performance ×1
quartz.net ×1
resharper ×1
t-sql ×1
utf-16 ×1