Перечислить значение в кортеже с помощью ServiceStack Ormlite выдает исключение нулевой ссылки - PullRequest
0 голосов
/ 09 ноября 2018

Я получаю «Ссылка на объект не установлена ​​на экземпляр объекта» при использовании нотации Tuple с Enum в возвращаемой структуре.

Если я изменю тип в кортеже с типа Enum на string, он будет работать как следует, также, если я изменю его, чтобы он возвращал только одно значение (string или enum), он будет работать так, как и должен.

Это баг в ServiceStack? Я использую ServiceStack.OrmLite.SqlServer v5.4.0 в LinqPad v5.31.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
}

1 Ответ

0 голосов
/ 09 ноября 2018

Это изменение должно быть разрешено с этого коммита .

Это изменение доступно с v5.4.1, которое теперь доступно на MyGet .

...