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.