Serializzazione e deserializzazione degli alberi delle espressioni in C #


Risposte:


48

Ho continuato a lavorare sulla libreria menzionata da Serializzazione e deserializzazione degli alberi delle espressioni in C #

Sembra che il progetto sia stato abbandonato (2008) ma ci ho lavorato sopra e ora funziona con .NET 4.0 e Silverlight. Ho apportato correzioni di bug al loro codice e l'ho anche reso più indipendente dal DAL.

http://expressiontree.codeplex.com/


2
+1 per aver trovato una soluzione funzionante. Ho provato a utilizzare la libreria originale su MSDN e non è stato possibile deserializzare un semplice nodo di espressione binaria. Il tuo progetto funziona alla grande. Grazie!
Jacobs Data Solutions

2
È un progetto su Nuget?
Mohammad Dayyan

@ MohammadDayyan, Microsoft è stata indecisa e incoerente sul suo strumento di gestione dei pacchetti. A volte i pacchetti ASP.NET CORE possono essere installati con Nuget, in altri casi, ad esempio, un driver MongoDB non sarà disponibile tramite NuGet. Almeno Microsoft aveva comunque l'intuizione di consentire a NPM di gestire i pacchetti. È più probabile che lo metta su NPM
T. Webster

@RepoMan risolvere un problema vale molto di più per me quando aiuta qualcuno. Forse puoi contribuire con qualche documentazione sull'utilizzo - parliamone ..
T. Webster

14

Un'altra opzione è il progetto Expression Tree Serialization su code.msdn.com - sembrerebbe essere più ciò che è necessario qui?

UPD: ora http://archive.msdn.microsoft.com/exprserialization


Il codice di serializzazione di Expression Tree viene rimosso dalla galleria del codice code.msdn.microsoft.com/exprserialization , qualche idea su dove viene spostato o alternative migliori?
Kiran Bheemarti

@Kiran: cosa intendi? Il download del codice è ancora lì; controlla la scheda download nella parte superiore della pagina.
Robert Harvey

Sì, ora è, probabilmente una cosa temporanea, la pagina stava lanciando un errore di progetto non trovato ieri quando ho provato il collegamento sopra. Vedo il progetto e lo scarico ora. Grazie!!!
Kiran Bheemarti

13

C'è un progetto su GitHub / Nuget chiamato MetaLinq che mira a rendere più facile il lavoro con l'espressione tress.

Converte tra espressioni normali e "EditableExpressions" che sono modificabili e completamente serializzabili, quindi possono essere utilizzate con Json, Xml, Binary ecc.

Controlla anche questo post del blog per maggiori informazioni.


12

dai un'occhiata alla mia nuova libreria Serialize.Linq . Serializza le espressioni linq in json, xml e binary.


l'hai usato prima? come è stata la tua esperienza / hai trovato dei limiti?
Alexandre Brisebois

ne ho usata una versione simile nel mio ultimo progetto. funziona bene.
esskar

Perché dovresti scrivere qualcosa che sanguina peggio le linee tra i livelli? Stai promuovendo l'esposizione degli oggetti del dominio DAL al BAL ... a meno che la tua libreria in qualche modo converta automaticamente i DTO (e le query su di essi) in oggetti / query del dominio. Non vedo nulla nei documenti che indichi tale comportamento.
M.Babcock

@ M.Babcock: quello che vuoi usare nelle tue espressioni DTO vs Entities non fa parte della logica della libreria.
esskar

4
@esskar il tuo blog / intero sito sembra essere andato. si è spostato?
Jon

3

Non per intero; tuttavia, l' esempio Dynamic LINQ potrebbe essere di aiuto. Puoi certamente serializzare un'espressione in una stringa (in una certa misura - i generici sembrano un po 'irregolari), ma non esiste un parser integrato.


Non riesco a scoprire come serializzare un'espressione in una stringa utilizzando il campione, solo l'altra direzione, da prendere come stringa e creare un albero delle espressioni. Quale metodo chiamo?
Christopher Edwards


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.