Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Obsługa daty zerowej MySQL za pomocą EF Core

Ludzie mogą argumentować, że to lepiej nadaje się jako komentarz, ale w zasadzie jest to zbyt długie.

Oraz:

Będziesz musiał mi trochę pomóc, ponieważ nie mam pod ręką działającego systemu, więc robię to z czubka głowy. (i trochę się spieszy)

Najpierw zacznij od niezmapowanej właściwości:

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

Ta właściwość nie jest mapowana. Może to prowadzić do błędów związanych z niezgodnością bazy danych z modelem, ale możemy to przezwyciężyć. Ta właściwość nie zostanie automatycznie wypełniona podczas zapytania o dane. Dlatego potrzebujemy sposobu, aby sobie z tym poradzić.

Na przykład (co jest złym przykładem, ponieważ potrzebujemy gdzieś kontekstu w encji ):

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

Podstawowe pytanie tutaj; jak daleko chcesz się posunąć, aby to wesprzeć w ramach EF? Czy wystarczy tylko przeczytać, czy też pisać, korzystając ze śledzenia zmian EF itp.?

Istnieją inne możliwości, na przykład wykonanie CAST do nvarchar w samym SQL w celu uzyskania danych i dalszego ich przetwarzania.

Może ModelBuilder udostępnia kilka dodatkowych opcji.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczna rozwijana wartość z bazy danych

  2. Licencjonowanie MySQL i GPL

  3. Procedura składowana Mysql z tablicą ciągów java

  4. Aktualizacja schematu doktryny Symfony2 nie powiodła się

  5. MySql Count nie może pokazać wartości 0