Это действительно смущает меня. Вот фрагмент моей модели:
* SQL Server *
Event
-----
Id (int, PK) NOT NULL
Title (varchar(100)) NULL
LastModified (datetime) NULL
EventDates
----------
Id (int, PK) NOT NULL
StartDate (datetime) NULL
EndDate (datetime) NULL
* C# *
Event
-----
public int Id
public string Title
public DateTime LastModified
EventDates
----------
public int Id
public DateTime StartDate
public Datetime EndDate
Поле LastModified
находится в базе данных с момента его создания. Я сохранял его значение при сохранении события, но хочу отобразить его в таблице, поэтому я изменил возвращаемое значение GetEvents
хранилища событий:
return (from e in GetDbEvents()
select new Event
{
// Miscellaneous fields..
LastModified = e.LastModified.GetValueOrDefault() // Shiny new code
});
Когда я звоню сейчас, меня кричат:
The conversion of a char data type to a datetime data type
resulted in an out-of-range datetime value.
Если я приведу приведенный выше код к этому, это все равно не поможет, и я получу ту же ошибку, если попытаюсь перечислить результат:
var test = (from e in _db.Events
select e.LastModified.GetValueOrDefault());
В качестве теста я сделал то же самое для своей таблицы EventDates
(опять же, с 2 столбцами даты и времени):
var test4 = (from ed in _db.EventDates
select new EventDate
{
StartDate = ed.StartDate.GetValueOrDefault(),
EndDate = ed.EndDate.GetValueOrDefault()
});
Это прекрасно работает, конечно. Нет ошибок при перечислении, все значения верны.
Следует отметить, что некоторые значения LastModified
в таблице Events
равны NULL
, тогда как все значения в EventDates
заполнены данными.
Я что-то упустил? Заранее спасибо!
EDIT
Мой главный вопрос: почему Events
дает мне проблемы вне диапазона, а EventDates
- нет, хотя модель очень похожа?