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.