2009-05-04 10 views
8

Jak ustawić pole do DBNull w Entity Framework? Pola są silnie wpisane, więc nie można ustawić go na wartość DBNull.Value i nie znalazłem żadnej metody ustawienia pola na DBNull. Wygląda na to, że jest to konieczne, ale po wielu badaniach Google nie znalazłem nic na ten temat.Jak ustawić pole do DBNull w Entity Framework

Próbuję ustawić pole datetime w Entity Framework za pomocą vb.net. Wymaga to mi napisać

myEntity.mydate = Nothing 

nie ustawić pole null, ale zamiast ustawia go do domyślnej wartości daty, która nie jest prawidłową wartością daty w SQL Server.

Odpowiedz

14

Jeśli kolumna jest pustych w bazie klasa wynik będzie miał właściwość zerowalne też.

Na przykład, jeżeli Order tabela ma zerowalne Datetime kolumnę o nazwie CreatedDate, a następnie otrzymany Order klasa będzie wyglądać tak:

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

Jeżeli _ createdDate nie ma żadnej wartości, gdy dzwonisz ObjectContext.SaveChanges()System.DBNull będzie automatycznie wysyłane do bazy danych w ramach polecenia wstawiania lub aktualizacji.

Nadzieja to pomaga Alex

+2

Tak, to prawda, Alex. Problem był po mojej stronie. Pole, które uważałem za nullable, nie było. –

8

Ustaw wartość pola na null. Entity Framework przetłumaczy to na System.DBNull.

+0

najpierw trzeba zaakceptować wartości null na odpowiednią wartość pola bazy danych. – Blerta

+1

Używam vb.net, który nie ma wartości Null. Muszę użyć Nic zamiast tego, który ustawia datę na wartość domyślną zamiast Null. –

+1

@Eric VB.NET "Nic" jest C# 's "null" – splattne

0

Nigdy nie używałam struktury encji, ale czy możesz zmienić zmienną w typ null?

coś

dim entityVar as nullable(of date) 

następnie można wykonać = nic i pozostanie nic.

ale jak już mówiłem, nigdy nie używany entity-ram

patrząc na google znalazłem że bug report on Microsoft Connect

+1

Ustawiłem go na wartość null w pliku model.designer.vb, ale nadal nie ustawia go na wartość null w bazie danych. Ten raport o błędzie jest podobny do mojego problemu. Musi być na to sposób. Nie sądziłbyś, że zwolniliby strukturę obiektu bez możliwości ustawienia wartości bazy danych na wartość null w vb.net. –