Wpis z mikrobloga

Mam bazę danych z danymi przestrzennymi, korzystam z Entity Framework dla Postgresa i dodatku NetTopologySuite. Wysyłam zapytanie ajaxowe o wszystkie dane z jakieś tabeli, powiedzmy, że ma ona 2 kolumny: Id i Location, gdzie Id jest typu int, a Location typu Point (przestrzenne). Kiedy robię w kontrolerze po prostu:

return Db.NazwaTabeli.ToList();
to chrome wyrzuca mi błąd net::error_connection_reset (200) OK.

Kiedy natomiast zrobię np. coś takiego:

return Db.NazwaTabeli.Select(item => new { Id = item.Id, Location = new { Lat = item.Location.X, Lng = item.Location.Y}}).ToList();
to wszystko jest fajnie, tylko no rozwiązanie jest trochę mniej przejrzyste.
Czy da się to zrobić lepiej?

#dotnet #csharp #webdev #programowanie #postgresql #postgis #ajax
  • 12
  • Odpowiedz
return Db.NazwaTabeli.ToList();


@TenAnonToKlopoty: Jesteś pewny, że zwracany typ odpowiada temu co chcesz uzyskać? Wydaje mi się, że zwracasz tam jakiś bliżej nieokreślany obiekt, gdzie w drugim podejściu wskazujesz dokładnie jak ten obiekt ma wyglądać
  • Odpowiedz
@Czesiowcy: Akurat na to trafiłem więc skorzystałem, nie zagłębiałem się. Dane w tych typach są zapisywane dobrze w bazie i mam ich dobry podgląd. Problemem jest raczej parsowanie ich na json
  • Odpowiedz
@TenAnonToKlopoty: Złap na debugerze moment returna i zobacz, co wychodzi z bazy, będziesz miał 100% pewność. Nie znam tej biblioteki, z daleka wygląda jak niezgodność typów. Ewentualnie rozdziel sobie model encji i viewmodel i mapuj to w serwisie.
  • Odpowiedz
@przecier666: pewnie jakiś błąd parsowania jest, pytanie jaki i czy zostało mi pisanie swojego parsera czy są jakieś gotowe rozwiązania
znalazłem coś takiego jak GeoJSON co działa, ale name convention idzie się walić
  • Odpowiedz
@TenAnonToKlopoty: dbcontext ma okienko 200s na request, nie wyrabiasz się w tym przedziale - sprawdź max allowed lengrh w configu(domyślnie 30mb , zwiększ do np 1gb) albo sprawdź czy ilość rekordów w bazie nie jest zajebiscie duża

  • Odpowiedz