13
Mam jeden wiersz pochodzących z bazy danychDapper wielu obiektów z jednego rzędu
select "John" Name,
"Male" Gender,
20 Age,
"Rex" PetName,
"Male" PetGender,
5 PetAge
// ... many more ...
Korzystanie Wytworny, chciałbym ciągnąć ten wiersz w dwóch obiektach:
class Person
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
// ... many more ...
}
class Pet
{
public string PetName { get; set; }
public string PetGender { get; set; }
public int PetAge { get; set; }
// ... many more ...
}
Uwaga: nie ma nie ma tu związku hierarchicznego, po prostu próbuję odwzorować jeden wiersz bazy danych na dwa (lub więcej) obiektów.
Jak mogę to zrobić, korzystając z aplikacji dapper?
- Wiem, że mogę to zrobić, zwracając dynamicznie i odwzorowując każdy obiekt ręcznie, co jest bolesne, ponieważ w moim scenariuszu mamy dużą liczbę kolumn. Wolałbym tego nie robić. (I nie, to nie może być zmieniony, aby wymagać mniej kolumn.)
Co próbowałem:
- Przyjrzeliśmy się
QueryMultiple<Person,Pet>
, ale zakłada Używam wielu zapytań. W moim prawdziwym scenariuszu jest to bardzo kosztowna kwerenda i chciałbym ją uruchomić raz. - Sprawdziłem również powrót
Query<Person,Pet,Tuple<Person,Pet>>
, ale wymaga to kolumnyId
, tutaj nie ma związków hierearchicznych aniId
s. Chcę tylko wziąć jeden wiersz i zamapować go na wiele kolumn.
jestem brakuje czegoś? Nawet gdy dostarczam 'splitOn', nadal otrzymuję' ArgumentException: Używając interfejsów API multi-mapping, upewnij się, że ustawiłeś parametr splitOn, jeśli masz klucze inne niż Id. Nazwa parametru: splitOn' –
To dziwne. może być konieczne wyświetlenie dokładnego zapytania SQL i kodu. nie jest prawdopodobne, ale może twoje pole splitOn istnieje również w pierwszym typie, i masz na myśli włączyć go do drugiego typu, przez przypadek? –
Masz rację, kiedy używam go z tym scenariuszem zabawek, działa dobrze. Będę musiał zagłębić się i dowiedzieć, gdzie moje rzeczy idą źle w moim prawdziwym kodzie. –