使用 ServiceStack Ormlite 的元组中的枚举值抛出空引用异常
Enum value in tuple using ServiceStack Ormlite throws null reference exception
在 return 结构中使用带有枚举的元组表示法时,我得到 "Object reference not set to an instance of an object"。
如果我将元组中的类型从枚举类型更改为字符串,它会正常工作,如果我将它更改为 return 只有一个值(字符串或枚举),它也会正常工作。
它是 ServiceStack 中的错误吗?
我在 LinqPad v5.31.0
运行 ServiceStack.OrmLite.SqlServer v5.4.0
void Main()
{
var uniqueId = "a635266024448923446";
var result = new Dictionary<Language, string>();
using (var db = _connectionFactory.OpenDbConnection())
{
// This works fine
var rows1 = db.Select<A>("select LanguageId, Name from tblTable");
foreach (var row in rows1)
{
result.Add(row.LanguageId, row.Name);
}
}
using (var db = _connectionFactory.OpenDbConnection())
{
// This throws "Object reference not set to an instance of an object."
var rows2 = db.Select<(Language Language, string Name)>("select LanguageId, Name from tblTable");
foreach (var row in rows2)
{
result.Add(row.Language, row.Name);
}
}
}
public class A
{
public Language LanguageId { get; set; }
public string Name { get; set; }
}
public enum Language
{
NO,
EN,
SV,
DK
}
此更改应从 this commit 开始解决。
此更改适用于现在 available on MyGet 的 v5.4.1。
在 return 结构中使用带有枚举的元组表示法时,我得到 "Object reference not set to an instance of an object"。
如果我将元组中的类型从枚举类型更改为字符串,它会正常工作,如果我将它更改为 return 只有一个值(字符串或枚举),它也会正常工作。
它是 ServiceStack 中的错误吗? 我在 LinqPad v5.31.0
运行 ServiceStack.OrmLite.SqlServer v5.4.0void Main()
{
var uniqueId = "a635266024448923446";
var result = new Dictionary<Language, string>();
using (var db = _connectionFactory.OpenDbConnection())
{
// This works fine
var rows1 = db.Select<A>("select LanguageId, Name from tblTable");
foreach (var row in rows1)
{
result.Add(row.LanguageId, row.Name);
}
}
using (var db = _connectionFactory.OpenDbConnection())
{
// This throws "Object reference not set to an instance of an object."
var rows2 = db.Select<(Language Language, string Name)>("select LanguageId, Name from tblTable");
foreach (var row in rows2)
{
result.Add(row.Language, row.Name);
}
}
}
public class A
{
public Language LanguageId { get; set; }
public string Name { get; set; }
}
public enum Language
{
NO,
EN,
SV,
DK
}
此更改应从 this commit 开始解决。
此更改适用于现在 available on MyGet 的 v5.4.1。