Хората може да твърдят, че това е по-подходящо за коментар, но по принцип е твърде дълго за това.
И:
Ще трябва да ми помогнете малко, тъй като нямам работеща система под ръка, така че правя това от върха на главата си. (и малко бързам)
Първо, започнете с некартографирано свойство:
[NotMapped]
public DateTime ExpiryDate { get; set; }
Това свойство не е картографирано. Това може да доведе до някои грешки, свързани с това, че базата данни не съответства на модела, но можем да преодолеем това. Това свойство няма да се попълва автоматично при запитване на данните. Така че ние се нуждаем от начин сами да се справим с това.
Например (което е лош пример, защото се нуждаем от контекста в обекта някъде ):
[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
}
}
Основният въпрос тук; докъде искате да стигнете, за да подкрепите това в рамките на EF? Трябва ли само да го четете или да пишете, като използвате инструмента за проследяване на промените на EF и т.н.?
Има и други възможности, например за изпълнение на CAST да nvarchar в самия SQL, за да получи данните и да ги обработи допълнително.
Може би ModelBuilder
разкрива някои допълнителни опции.