Dapper не десериализационный тип nvarchar - PullRequest
0 голосов
/ 29 марта 2019

По сути, у меня есть объект Playlist:

public class Playlist
{
    public int PlaylistID { get; set; }
    public string PlaylistName { get; set; }
    public string PlaylistUri { get; set; }
    public int FestivalID { get; set; }
}

Когда я пытаюсь прочитать данные из базы данных, данные PlaylistID и FestivalID заполняются, а PlaylistName / PlaylistUri - нет.Я проверил типы данных:

COLUMN_NAME DATA_TYPE
PlaylistID  int
PlaylistName nvarchar
PlaylistUri nvarchar
FestivalID  int

Здесь также приведен код для получения данных (Очень много в альфа-формате, когда все будет готово)

public class SpotifyApiData
{
    private string _connectionString;
    private string ALL_DATA = "SELECT * FROM EdgeCases; SELECT [PlaylistID] ,[PlaylistName],[PlaylistID] FROM Playlist; SELECT * FROM Festival;";
    public string ConnectionString { get => _connectionString; set => _connectionString = value; }


    public SpotifyApiData()
    {
        _connectionString = ConfigurationHelper.GetConnectionString();
    }

    public void GetRefreshablePlaylist()
    {

    }

    public PlaylistCollectionData GetAllData()
    {
        using (var connection = new SqlConnection(ConnectionString))
        {
            using (var multi = connection.QueryMultiple(ALL_DATA))
            {

                return new PlaylistCollectionData()
                {
                    EdgeCases = multi.Read<EdgeCases>().ToList(),
                    Festivals = multi.Read<Festival>().ToList(),
                    Playlists = multi.Read<Playlist>().ToList()
                };
            }
        }
    }
}

1 Ответ

1 голос
/ 29 марта 2019

Вы читаете Фестиваль перед PlayList.Инвертируйте эти две строки в соответствии с порядком запроса select

return new PlaylistCollectionData()
{
    EdgeCases = multi.Read<EdgeCases>().ToList(),
    Playlists = multi.Read<Playlist>().ToList(),
    Festivals = multi.Read<Festival>().ToList()
};

Также выбор для списка воспроизведения кажется неполным, он должен быть

 SELECT [PlaylistID],[PlaylistName],[PlaylistUri],[FestivalID] FROM Playlist;
...