sql >> Base de Datos >  >> RDS >> Mysql

Manejo de MySQL Zero Date con EF Core

La gente podría argumentar que esto es más adecuado como comentario, pero básicamente, es demasiado para eso.

Y:

Tendrás que ayudarme un poco ya que no tengo un sistema que funcione a la mano, así que estoy haciendo esto desde la parte superior de mi cabeza. (y tengo un poco de prisa)

Primero, comience con una propiedad no asignada:

[NotMapped]
public DateTime ExpiryDate { get; set; }

Esta propiedad no está mapeada. Puede dar lugar a algunos errores relacionados con la base de datos que no coincide con el modelo, pero podemos solucionarlo. Esta propiedad no se llenará automáticamente al consultar los datos. Entonces, necesitamos una forma de lidiar con esto nosotros mismos.

Por ejemplo, (que es un mal ejemplo porque necesitamos el contexto en la entidad en alguna parte ):

[NotMapped]
public DateTime? ExpiryDate 
{
    get
    {
         //of course you'll need some caching here
         var s = context.Database.SqlQuery<string>("query to select datetime as string");
         //additional logic to determine validity:
         if (s == "0000-00-00")
             return null;
         //else:
         //do the conversion
    }
 }

La pregunta básica aquí; ¿Hasta dónde quiere llegar para apoyar esto dentro del marco de EF? ¿Solo necesita leerlo o escribirlo también, usando el rastreador de cambios de EF, etc.?

Hay otras posibilidades, por ejemplo, para realizar un CAST a nvarchar dentro del propio SQL para obtener los datos y procesarlos más.

Tal vez el ModelBuilder expone algunas opciones adicionales.