Когда я получаю запись с использованием LINQ, у которой есть поле DateTime, доступен только ToString().
Где все остальные методы DateTime?
Мне нужно Convert.ToDateTime DateTime? что поле возвращает?
В чем разница между (DateTime) и (DateTime?)
Когда я получаю запись с использованием LINQ, у которой есть поле DateTime, доступен только ToString().
Где все остальные методы DateTime?
Мне нужно Convert.ToDateTime DateTime? что поле возвращает?
В чем разница между (DateTime) и (DateTime?)
Если на DateTime?
вы имеете в виду a Nullable<DateTime>
, то вы можете получить значение DateTime
с помощью свойства DateTime?.
Value
.
В SQL время DateTimes имеет значение null. В С# DateTimes не может быть нулевым. Вы можете немного прочитать о свойствах с нулевым значением. Поскольку переменные с вводом значений не могут быть нулевыми, для обработки этой ситуации был создан общий класс. Он называется Nullable < > и он обычно записывается с вопросительным знаком после типа.
Чтобы использовать эти значения, вы захотите проверить свойство .HasValue. Это логическое значение, которое знает, есть ли значение в объекте или оно равно null. После того, как вы проверили, что свойство .HasValue истинно, вы можете безопасно использовать свойство .Value. Свойство .Value будет иметь тип DateTime.
В SQL у вас поле DateTime установлено значение Allow Null. Затем в LINQ, когда вы собираетесь получить доступ к полю,.NET не знает, действительно ли поле является датой или нет, поэтому вам нужно преобразовать T.ToDateTime(), прежде чем какие-либо методы становятся доступными для вас.
Если поле всегда будет содержать дату, установите для столбца базы данных значение NOT NULL, и вы должны быть в порядке.
Столкновение пространства имен в стороне, я знаю, что SQL datetime имеет другую эпоху (и, следовательно, другой диапазон допустимых дат), чем С# datetime.
Попробуйте отправить new DateTime()
в хранимую процедуру и посмотреть, что я имею в виду.