2011-01-28 12 views
7

La mia app è puramente di sola lettura, quindi non voglio generare tutto il codice di aggiornamento &, e non voglio estrarre tutti i campi da tutte le tabelle. Alcuni di questi campi non sono annullabili quindi ricevo gli errori da EF qui perché non esiste alcun valore predefinito da salvare.Come creare entità di sola lettura in Entity Framework?

Nel mio precedente ORM (Wilson) si poteva semplicemente contrassegnare un'entità come sola lettura nell'XML. Ho visto alcuni post che mostrano soluzioni contorte a questo. Mi sto perdendo qualcosa? Perché non è così semplice?

vedo che la procedura guidata servizi RIA ha una casella di controllo per questo per ogni entità ...

Grazie per eventuali chiarimenti.

+0

Devi essere più preciso sugli errori che vedi e in quali circostanze li vedi. Non esiste una funzionalità di "sola lettura", ma la tua app dovrebbe comunque funzionare comunque. –

+1

Dopo aver rimosso alcune colonne (che non sono nulle nel database) dall'entità nella finestra di progettazione, ottengo l'errore: "La colonna xyz nella tabella ABC deve essere mappata: non ha valore predefinito e non è annullabile." Il che ha senso, ma voglio ignorare completamente quella colonna e non avere affatto il codice di aggiornamento della build di EF. – Graeme

risposta

1

Il problema è che nel proprio SSDL è presente un campo non annullabile che non si trova nel CSDL.

È possibile rimuovere manualmente la colonna da SSDL e l'EF sarà felice. Ma il il progettista aggiungerà nuovamente la colonna quando si aggiorna il modello. Quindi puoi rimuoverlo di nuovo o aggiornare il tuo modello da una variante del DB che non ha quella colonna.

+0

Questo è quello che sospettavo. Ma perché? Qual è stata la difficoltà nel consentire un attributo di sola lettura o nel rimuovere la colonna dal SSDL se la rimuovo dall'EDMX? – Graeme

+1

Non è possibile avere un attributo di sola lettura, non annullabile su un tipo di lettura-scrittura, e l'EF non ha una funzione di tipo "sola lettura", AFAIK. Rimuovere una colonna da SSDL non è "difficile", ma il progettista sceglie di non farlo perché nel mondo del designer della GUI, l'SSDL è * sempre * generato (e, frequentemente, rigenerato), non mantenuto manualmente. –

+0

OK, posso accettare di rimuovere la colonna da SSDL (e continuare a rimuoverla) ma per quanto riguarda tutto il codice crud generato - è solo fastidioso sapendo che è lì anche quando non è richiesto. Mi chiedo quale sia il problema con EF che non ha un attributo di tipo read-only è ... – Graeme

Problemi correlati