Неверная культура веб-сайта Aspnetcore / проблема с запросом efcore

У меня есть странная проблема с культурой, которая влияет на мои запросы/результаты структуры сущностей при сравнении дат.

Я использую следующий код, чтобы установить информацию о моей культуре в startup.cs:

var supportedCultures = new[]
{
    new CultureInfo("en-GB"),
};

app.UseRequestLocalization(new RequestLocalizationOptions
{
    DefaultRequestCulture = new RequestCulture("en-GB"),
    SupportedCultures = supportedCultures,
    SupportedUICultures = supportedCultures
});

Однако, когда приходит HTTP POST, и я проверяю текущую культуру, используя:

Thread.CurrentThread.CurrentCulture.Name

он возвращает en-US, из-за чего мои запросы entity framework core не могут сравнивать даты.

С запросом структуры сущности en-US все результаты возвращаются MM/DD/YY, а с en-GB результатами являются DD/MM/YY, поэтому, когда я использую предложение where в запросе, например:

event.DateTimeRead.Date == input.Date

... сравнение не работает, что, как я подозреваю, связано с конфликтом форматов даты с текущей культурой.

Будем очень признательны за любые советы о том, как исправить это, чтобы решить эту проблему!


person David Hawkins    schedule 12.08.2016    source источник
comment
Из того, что я вижу, культура верна в методах контроллера, но репозиторий (который создается с помощью внедрения зависимостей) имеет неправильную информацию о культуре (не всегда, это странно).   -  person David Hawkins    schedule 12.08.2016
comment
Почему культура влияет на сравнение данных?   -  person DavidG    schedule 12.08.2016
comment
Когда я регистрирую дату, используемую для запроса данных, она находится в формате дд/мм/гг, а когда я в первую очередь запрашиваю строки данных и печатаю дату каждой строки, она находится в формате мм/дд/гг. Я также могу запросить данные в неправильном формате мм/дд/гг, и это работает (чаще всего, чем нет).   -  person David Hawkins    schedule 12.08.2016
comment
Даты не имеют форматов или культуры, поэтому это просто невозможно. Однако, если даты преобразуются в строки, у вас возникнут проблемы, и этого делать не следует.   -  person DavidG    schedule 12.08.2016
comment
Вот запрос EF, который я использую, return db.Events.Where(evt => evt.DateTimeRead.Date == selectedDateTime.Date) В нем нет сравнения строк   -  person David Hawkins    schedule 12.08.2016
comment
Да никак культура на это не повлияет.   -  person DavidG    schedule 12.08.2016
comment
Давайте продолжим обсуждение в чате.   -  person David Hawkins    schedule 12.08.2016
comment
Вы можете столкнуться со следующей проблемой: stackoverflow.com/questions/38840183/ ... попробуйте ответ, который был предложен здесь   -  person Kiran Challa    schedule 12.08.2016
comment
@KiranChalla Это не объясняет, почему запрос EF не работает для определенной культуры.   -  person DavidG    schedule 12.08.2016