Una noisa limitazione di LINQ To SQL

di Stefano Mostarda, in .NET,

Lo sappiamo tutti: LINQ To SQL è stato concepito appositamente con delle limitazioni. Mapping 1:1 con il database (con conseguente obbligatorietà di avere una classe di correlazione per il mapping many-to-many), ereditarietà che non supporta tutti e 3 i modelli, classi apposite per gestire riferimenti a entità (EntitySet e EntityRef), ecc ecc.

Dal mio punto di vista, la prima e la seconda limitazione sono accettabili per un tool che nasce con lo scopo di gestire progetti semplici. La terza, tuttavia, proprio non la accetto. Per motivi di Lazy Loading e riferimenti al DataContext, EntitySet non è serializzabile. Questo significa che se in un servizio WCF proviamo a esporre un'entità Fattura che ha una EntitySet di oggetti DettaglioFatttura, riceviamo una bella eccezione di serializzazione a runtime.

Il workaround è presto trovato, basta evitare di mettere il DataMember sulla proprietà in questione e farne una copia che espone una lista generica di oggetti DettaglioFattura, e non un EntitySet, preoccupandosi di valorizzarla correttamente. Facendo così i problemi si risolvono, ma il disappunto rimane per una cosa che poteva essere fatta meglio e non costringerci al workaround.

P.S. A nessun Ughetto è stato fatto male durante la stesura di questo post, anzi, è lui che ha fatto del male a me :D

Stay Tuned...

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese