2009-05-04 9 views
8

Come si imposta un campo su DBNull in Entity Framework? I campi sono fortemente tipizzati quindi non è possibile impostarlo uguale a DBNull.Value e non ho trovato alcun metodo per impostare un campo su DBNull. Sembra che questa sia una cosa necessaria da fare, ma dopo molte ricerche su Google non ho trovato nulla a riguardo.Come impostare un campo su DBNull in Entity Framework

Sto cercando di impostare un campo datetime in Entity Framework utilizzando vb.net. Questo mi obbliga a scrivere

myEntity.mydate = Nothing 

Questo non imposta il campo su null, ma invece la imposta al valore di data di default che non è un valore di data valida in SQL Server.

risposta

14

Se una colonna è nullable nel database della classe risultato avrà una proprietà nullable troppo.

Per esempio, se una tabella Order ha un Datetime colonna Null chiamato CreatedDate, quindi il risultante Order classe sarà simile a questa:

public partial class Order: EntityObject 
{ 
    ... 
    private DateTime? _createdDate; 
    ... 
} 

Se il _ createdDate non ha alcun valore quando si chiama ObjectContext.SaveChanges() un System.DBNull volontà automaticamente inviato al database come parte del comando di inserimento o aggiornamento.

Spero che questo aiuti Alex

+2

Sì, è corretto Alex. Il problema era dalla mia parte. Un campo che pensavo fosse annullabile non lo era. –

8

Impostare il valore del campo su null. Entity Framework lo tradurrà in System.DBNull.

+0

primo luogo si dovrebbe accettare valori nulli sul valore del campo database appropriato. – Blerta

+1

Sto usando vb.net che non ha Nulls. Devo usare Nothing invece che imposta la data sul valore predefinito invece di Null. –

+1

@Eric VB.NET "Niente" è "nullo" di C# – splattne

0

Non ho mai usato il framework di entità ma è possibile trasformare una variabile in un tipo nullable?

qualcosa come

dim entityVar as nullable(of date) 

allora si può fare il = nulla e rimarrà nulla.

ma come ho detto, non ho mai usato entità-quadro

mentre cerca su google ho trovato che bug report on Microsoft Connect

+1

L'ho impostato su null nel file model.designer.vb ma non lo imposta ancora nel database. Quel bug report è simile al mio problema. Ci deve essere un modo per farlo. Non pensereste che rilascerebbero il framework di entità senza la possibilità di impostare valori di database su null in vb.net. –

Problemi correlati