Giusto un promemoria circa alcune risorse MSDN molto utili per lo sviluppo su LINQ to SQL:
Si possono trovare delle sintetiche informazioni di comune utilità, alcune delle quali non così conosciute. Cito alcune issues significative:
- Nei progetti Class-Library, il designer OR crea una connection string anche nell'app.config. Ora, poiché nei progetti Class Library il file app.config viene ignorato, LINQ to SQL utilizzerà la connection string fornita a design-time (es. Settings). Di conseguenza, modificare manualmente l'app.config non permette di cambiare il DB a cui connettersi.
- LINQ to SQL non supporta operazioni "Cascade DELETE". Possiamo dunque risolvere la questione da codice oppure impostando la regola ON DELETE CASCADE nel vincolo di chiave esterna.
- La concatenazione di stringhe su operandi mappati da [n]text e altri da [n][var]char NON è supportata.
- LINQ to SQL fornisce due modi per elaborare correttamente un valore ritornato da una stored procedure:
- dando un nome all'output (select max(c) AS MaxResult from t where ...) della stored procedure
- specificando esplicitamente un OUTPUT parameter (es. @result int OUTPUT .... select @result = MAX(c) from t where ...)
- La generazione di codice in LINQ to SQL supporta la serializzazione tramite DataContractSerializer ma NON XmlObjectSerializer o BinaryFormatter.
- LINQ to SQL evita nativamente le SQL injection tradizionali (ovvero quelle generate dalla concatenzione dell' input dell'utente con statement SQL maliziosi) poiché nelle query autogenerate utilizza i SqlParameter. In questo modo lo user input viene automaticamente convertito in un valore ammissibile di un parameter.
Technorati tags: LINQ, SQL