2010-06-19 7 views
8

Sto tentando di creare un modello Entity Framework 4 basato su un database SQL Server 2008 legacy. Dato che il modello verrà pubblicato in un servizio web, devo omettere una colonna intera chiamata Newsletter Sottoscritta da una delle entità del modello.Entity Framework: la colonna deve essere mappata anche se ha un valore predefinito?

Dopo aver rimosso la colonna nella finestra di progettazione EF ho ottenuto il seguente errore di compilazione:

Error 59 Error 3023: Problem in mapping fragments starting at line 356:Column Users.NewsletterSubscribed in table Users must be mapped: It has no default value and is not nullable. 
    C:\Users\Adrian\Documents\Sites\Zeiterfassung\Zeiterfassung\API\V1\EFModel.edmx 357 15 Zeiterfassung 

ma la colonna sembra avere un valore predefinito di 0 ad esso legato. Ho provato a fare funzionare questa istruzione SQL sul database:

ALTER TABLE [dbo].[Users] ADD DEFAULT ((0)) FOR [NewsletterSubscribed] 

Ma anche questo non funziona:

Msg 1781, Level 16, State 1, Line 3 Column already has a DEFAULT bound to it. Msg 1750, Level 16, State 0, Line 3 Could not create constraint. See previous errors.

Quindi, o la colonna non ha un valore predefinito (in questo caso non sono sicuro perché posso creare uno), o Entity Framework non lo vede. Cosa sta succedendo?

Grazie,

Adrian

risposta

12

Aprire l'edmx con editor XML di Visual Studio, piuttosto che con l'Entity Designer, e aggiungere un attributo DefaultValue="0" alla colonna mappata nel SSDL. Per alcuni motivi questi non sono generati dal database.

+0

Grazie! Sono stato alle prese con questo per settimane ... –

Problemi correlati