sql >> Databáze >  >> RDS >> Mysql

Zpracování nulového data MySQL pomocí EF Core

Lidé by mohli namítnout, že se to lépe hodí jako komentář, ale v zásadě je po tom toužit.

A:

Budete mi muset trochu pomoci, protože nemám po ruce funkční systém, takže to dělám z hlavy. (a trochu spěchám)

Nejprve začněte s nenamapovanou vlastností:

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

Tato vlastnost není zmapována. Může to vést k některým chybám týkajícím se toho, že databáze neodpovídá modelu, ale můžeme to překonat. Tato vlastnost nebude automaticky vyplněna při dotazu na data. Takže potřebujeme způsob, jak se s tím vypořádat my sami.

Například (což je špatný příklad, protože někde potřebujeme kontext v entitě ):

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

Základní otázka zde; jak daleko chcete zajít, abyste to podpořili v rámci EF? Potřebujete jej pouze číst nebo také zapisovat pomocí sledování změn EF atd.?

Existují další možnosti, například provést CAST na nvarchar v rámci samotného SQL k získání dat a jejich dalšímu zpracování.

Možná ModelBuilder odhaluje některé další možnosti.




  1. Pomalý poddotaz v MySQL

  2. MYSQL:Kde je klauzule nejednoznačná

  3. Dotaz ze zaškrtávacích políček

  4. MySQL GROUP od Regex?