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.