Entity Framework - serializacia entit do JSONu rubrika: Programování: .Net

7 xxar3s
položil/-a 19.9.2016

Mam vystup z db vo forme entit a potrebujem ho vratit cez ajax ako JSON ale narazam hned na niekolko problemov

a) circular references (tie nepotrebujem) pri ktorych sa serializer zacykli. Aj ked som nastavil aby ich ignoroval.
b) kontext je uz disposnuty takze nie su dostupne niektore vnorene objekty (relacie - tie ktore som neincludol a ktore nepotrebujem, stacilo by mi keby mi namiesto nich priradilo do property hodnotu null).

Bezne to riesim tak ze si na kazdu entitu urobim "prepravku" (alebo sadu prepraviek) bez zbytocnych navigation properties a tu potom serializujem (ale to je zbytocny kod navyse) a nebavi ma to robit stale dookola.

takze potrebujem:

a) aby serializer circular references ignoroval
b) aby serializer ignoroval tie relacie, ktore som nenaincludoval.

Ako to riesite vy? Ako najednoduchsie serializovat entity? Bez toho aby som musel prepisovat zbytocny kod. Normalne uz rozmyslam ze si napisem vlastny serializer.

Komentáře

  • Honza Břešťan : Pouziti EF entit na tyhle ucely zavede primou silnou zavislost mezi client UI a DB modelem, coz se brzo vrati jako bumerang primo do ksichtu. Neni lepsi vlastni projekce a treba AutoMapper na minimalizaci kodu? Nebo jak pise Petr Vones, pokud by stacil anonymni typ (coz bude fungovat asi jenom v pripade, ze se dotaz dela primo v Controlleru, coz jde asi jenom v hodne malych aplikacich), je to jeste jednodussi. 20.9.2016
odkaz
7 harrison314
odpověděl/-a 20.9.2016
 
upravil/-a 20.9.2016

Ono sa to bezne maj ma riesit "prepravkov", pretoze sa casto stava, ze sa posiela aj nieco naviac, alebo nieco menej ci ine. Treba si uvedomit rozdiel medzi ViewModelom a modelom. Taketo rienie je menej narocne na resoursi, kedze nemusis drzat EF context a spojenie na DB.

Ale k otazkam:

a) pozri sa na toto http://stackoverflow.com/questions/13588022/exclude-property-from-serial...
b) skusil by som Detach-nut objekty, ktore ides serializovat

Osobne si ale myslim, ze toto nie je najlepsi napad.

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.