У меня есть значение .NET DateTime, которое я записываю в поле «datetime» базы данных SQL Server (и, поверьте мне, я ЖЕЛАТЕЛЬНО, мы просто использовали «datetime2 (7)», которое точно соответствует точности DateTime .NET, но это не так) .
В любом случае, я записываю объект в базу данных, и это конкретное поле оказывается «2016-03-03 08: 55: 19.560».
Это время последней обработки, и я ищу другие записи, которые были обработаны до этого времени. Когда я запускаю предложение where фреймворка сущности, он завершает выполнение оператора, заканчивающегося на «@ p__linq__0 = '2016-03-03 08: 55: 19.5602354'» в качестве значения, с которым он сравнивает, которое в итоге оказывается немного больше, хотя эти два значения происходят из одного и того же экземпляра DateTime.
Я попытался изменить время сравнения с SqlDateTime, но тогда лямбда не компилируется, потому что не может сравнить DateTime? в SqlDateTime. В SqlDateTime есть методы сравнения, но я не знаю, распознает ли структура сущности эти функции.
Я даже не могу выполнить преобразование между ними в структуре сущностей, что просто дает ошибку «Невозможно преобразовать тип System.DateTime в тип System.Data.SqlTypes.SqlDateTime». LINQ to Entities поддерживает только преобразование примитива EDM или перечислимые типы ".