2009-05-04 17 views
8

¿Cómo se configura un campo para DBNull en Entity Framework? Los campos están fuertemente tipados por lo que no puede establecerlo igual a DBNull.Value y no encontré ningún método para establecer un campo en DBNull. Parece que esto es algo necesario, pero después de mucha investigación de Google no encontré nada al respecto.¿Cómo configuro un campo para DBNull en Entity Framework

Estoy tratando de establecer un campo de fecha y hora en Entity Framework usando vb.net. Esto me obliga a escribir

myEntity.mydate = Nothing 

Esto no establece el campo como nulo sino lo establece en el valor predeterminado de fecha que no es un valor fecha válida en SQL Server.

Respuesta

14

Si una columna es anulable en la base de datos de la clase de resultado se tiene una propiedad anulable también.

Por ejemplo, si una mesa Order tiene una columna anulable Datetime llamada CreatedDate, entonces el Order voluntad clase resultante es como la siguiente:

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

Si el _ createdDate no tiene ningún valor cuando se llama a ObjectContext.SaveChanges() un System.DBNull se se enviará automáticamente a la base de datos como parte del comando insertar o actualizar.

Esperanza esto ayuda Alex

+2

Sí, eso es correcto Alex. El problema estaba de mi lado. Un campo que pensé que era nulable no lo era. –

8

Establezca el valor de campo en null. Entity Framework traducirá esto a System.DBNull.

+0

En primer lugar debe aceptar valores nulos en el valor del campo base de datos adecuada. – Blerta

+1

Estoy usando vb.net que no tiene nulos. Debo utilizar Nothing en su lugar, que establece la fecha en el valor predeterminado en lugar de nulo. –

+1

@Eric VB.NET "Nothing" es "nulo" de C# – splattne

0

Nunca utilicé entidad-marco, pero ¿puede convertir una variable en un tipo que admite nulos?

algo así como

dim entityVar as nullable(of date) 

entonces usted puede hacer el = nada y se quedará nada.

pero como he dicho, nunca he usado entidad-marco

mientras mira en Google me encontré con que bug report on Microsoft Connect

+1

Lo configuré como anulable en el archivo model.designer.vb pero todavía no lo establece como nulo en la base de datos. Ese informe de error es similar a mi problema. Tiene que haber una manera de hacer esto. No creería que liberarían el marco de entidad sin la capacidad de establecer valores de base de datos en null en vb.net. –

Cuestiones relacionadas