Una noisa limitazione di LINQ To SQL

di Stefano Mostarda

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
Ricciolo scrive:
Una noisa limitazione di LINQ To SQL

A me stefano risultano invece serializzabili le EntitySet, non lo sono le EntityRef, ma per evitare referenze circolari padre->figlio e figlio->padre.
L'unico caso in cui non ti serializza le EntitySet è se queste non sono scaricate, perché non te le carica via lazy loading. Vuole che tu le abbia già popolate tramite DataLoadOptions oppure se hai acceduto alla proprietà prima di serializzarla, con conseguente caricamento in lazy loading.
28/06/2008 ore 17.00
Daniele Bochicchio scrive:
Una noisa limitazione di LINQ To SQL

veramente chi ci si è fatto del male con WCF+LINQ to SQL sono stato io, poi ne avete tratto benefici voi...
01/06/2008 ore 8.47 | 1 risposta
imperugo scrive:
RE: Una noisa limitazione di LINQ To SQL

Adesso pure tu stai a badà al dettaglio!!!!

Diciamo che con WCF, proxy, errori assurdi e varie beeeeeeeeeeeeep (era una parolaccia ) ci siamo fatti male un po' tutti, però vuoi mettere la soddisfazione di perdere una giornata per uno spazio sulla riga di configurazione????
Certe cose non hanno prezzo :D.

Per Linq to Sql rimane la perplessità, sia sulla serializzazione che oltre a wcf si può avere il problema quando si utilizza un sistema di cache distribuita e qui lo sapete entrambi, sia sul suo sistema di segnalare gli errori e problemi che ogni giorno riscontro.
Forse questo è dovuto al fatto che sto utilizzando Linq To Sql in un progetto troppo grande per lui, oppure sono io che mi sono ostinato a fargli fare più cose di quelle che può, ma per ora resto dell'idea che fa troppe troppe troppe poche cose.

Ciauz a tutti.
Mostarda ti do una testata !!!!!! (di affetto e stiva ovviamente), saluti da Francesco che è sulla safety car buahahahahaha
01/06/2008 ore 10.10

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

Nella stessa categoria
I più letti del mese
TagCloud
BLOG INFO
  • 130 post, 93 commenti, 20 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA