Nel tempo libero sto facendo un progettino, per provare finalmente WPF. Ho deciso di usare Entity Framework e come base di dati un database SqlCompact; la versione del Sql Compact è la 3.5 sp1.
Nel gestire anagrafiche di comuni, province e regioni ho usato come chiave primaria i codici istat salvati come varchar. A causa di questa scelta mi è capitato di imbattermi in un errore singolare: ogni volta che provavo a caricare le i comuni di una provincia (o le province di una regione) con Deferred Load veniva sollevata una eccezione con questo messaggio
Nelle clausole WHERE, HAVING, GROUP BY, ON o IN i tipi di dati ntext e image possono essere utilizzati solo con i predicati LIKE e IS NULL
Lo stesso errore non accadeva se li caricavo preventivamente (col metodo Include).
L'errore di per se mi pare strano sostanzialmente per due motivi:
- il tipo campo che ho usato è nvarchar e non ntext
- se mi da problemi con il WHERE del Deferred Load perchè non me li da con quello del Eager Load
Sul web non ho trovato granchè. Alla luce di questo desumo che potrebbe trattarsi di un bug.
Ho deciso quindi che ho trovato un ulteriore motivo per scegliere di usare la solita chiave numerica identity, invariante e priva di significato, mantenendo un vincolo di univocità sul campo codice. In questo modo il tutto funziona correttamente.
Matteo