sql >> Database teknologi >  >> RDS >> Mysql

Håndtering af MySQL Zero Date med EF Core

Folk vil måske hævde, at dette er bedre egnet som en kommentar, men dybest set er det at længes efter det.

Og:

Du bliver nødt til at hjælpe mig lidt, da jeg ikke har et fungerende system ved hånden, så jeg gør dette fra toppen af ​​mit hoved. (og jeg har lidt travlt)

Start først med en ikke-tilknyttet egenskab:

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

Denne egenskab er ikke kortlagt. Det kan føre til nogle fejl vedrørende databasen, der ikke matcher modellen, men det kan vi overvinde. Denne egenskab udfyldes ikke automatisk, når der forespørges på dataene. Så vi har brug for en måde at håndtere dette selv på.

For eksempel (hvilket er et dårligt eksempel, fordi vi har brug for konteksten i entiteten et eller andet sted ):

[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
    }
 }

Det grundlæggende spørgsmål her; hvor langt vil du gå for at støtte dette inden for EF-rammerne? Behøver du kun at læse den, eller også skrive, ved at bruge EF-skiftsporeren osv.?

Der er andre muligheder, for eksempel at udføre en CAST til nvarchar i selve SQL'en for at få dataene og behandle dem yderligere.

Måske ModelBuilder afslører nogle yderligere muligheder.




  1. python MySQLDB forespørgsel timeout

  2. Skift CakePHP-databasekonfiguration globalt

  3. Hvorfor kan jeg ikke oprette triggere på objekter, der ejes af SYS?

  4. hvordan man viser kolonne i mysql på nodejs med modulet mysql