Преобразовать пустой DateTime из 01.01.1900 в SQL в ноль в C # и наоборот - PullRequest
2 голосов
/ 07 марта 2019

Наша устаревшая база данных хранит пустые значения даты как 01.01.1900

Я хочу, чтобы мое приложение везде использовало 'null' как пустое значение, используя конвертеры.

Но документация говорит, что:

Нулевое значение никогда не будет передано в преобразователь значения. Это облегчает реализацию преобразований и позволяет им делиться между обнуляемыми и не обнуляемыми свойствами.

Мой код:

var dateConverter = new ValueConverter<DateTime?, DateTime>(
  v => v == null ? new DateTime(1900, 01, 01) : v.Value,
  v => v.Year == 1900 ? (DateTime?)null : v);

modelBuilder.Entity<Table>().Property(a => a.Date).HasConversion(dateConverter);

//query
return table.Where(a => a.Date == null);

Переводится на:

select * from table a where a.Date is null

Мне нужно, чтобы он автоматически переводился на что-то вроде:

select * from table a where a.Date = '1900-01-01T00:00:00.000'

Есть ли обходной путь для нулевых значений в конвертерах?

...