2009-05-04 27 views
8

Wie legen Sie ein Feld zu DBNull in Entity Framework? Die Felder sind stark typisiert, so dass Sie sie nicht gleich DBNull.Value setzen können und ich habe keine Methode gefunden, um ein Feld auf DBNull zu setzen. Es scheint, dass dies notwendig ist, aber nach vielen Google-Recherchen habe ich nichts dazu gefunden.Wie setze ich ein Feld auf DBNull in Entity Framework

Ich versuche, ein Datetime-Feld in Entity Framework mit vb.net festzulegen. Dies erfordert mich

myEntity.mydate = Nothing 

schreiben Dieser Satz nicht das Feld auf null, sondern stellt es auf den Standard-Datumswert, der kein gültiges Datum Wert in SQL Server ist.

Antwort

14

Wenn eine Spalte NULL-Werte zugelassen in der Datenbank der Ergebnisklasse wird eine Nullable-Eigenschaft verwendet.

Zum Beispiel, wenn eine Order Tabelle eine Nullable-Datetime Spalte CreatedDate genannt hat, dann wird die resultierende Order Klasse wird in etwa so aussieht:

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

Wenn die _ createdDate hat keinen Wert, wenn Sie ObjectContext.SaveChanges() ein System.DBNull nennen wird wird automatisch als Teil des Befehls zum Einfügen oder Aktualisieren an die Datenbank gesendet.

hoffe, das hilft Alex

+2

Ja das ist richtig Alex. Das Problem war auf meiner Seite. Ein Feld, von dem ich dachte, dass es null war, war es nicht. –

8

Setzen Sie den Feldwert auf null. Das Entity Framework wird dies in System.DBNull übersetzen.

+0

Zuerst sollten Sie Nullwerte auf dem entsprechenden Datenbank-Feldwert übernehmen. – Blerta

+1

Ich verwende vb.net, das keine Nulls hat. Ich muss stattdessen Nothing verwenden, das das Datum auf den Standardwert statt Null setzt. –

+1

@Eric VB.NET "Nichts" ist C# 's "null" – splattne

0

Ich habe nie Entity-Framework verwendet, aber können Sie eine Variable in einen NULL-fähigen Typ umwandeln?

so etwas wie

dim entityVar as nullable(of date) 

dann können Sie die = nichts tun und es wird nichts bleiben.

aber wie gesagt, ich nie zu entity-framework

während der Suche auf Google fand ich, dass bug report on Microsoft Connect

+1

Ich setze es in der model.designer.vb-Datei auf Nullwert, aber setze es immer noch nicht auf Null in der Datenbank. Dieser Fehlerbericht ähnelt meinem Problem. Es muss einen Weg geben, dies zu tun. Sie würden nicht glauben, dass sie das Entity-Framework freigeben würden, ohne die Datenbankwerte in vb.net auf null setzen zu können. –

Verwandte Themen