У меня есть форма с текстовым полем для ввода даты. Если я предоставлю дату все хорошо. Если я не предоставляю дату (я оставляю ее пустой), отправляется значение DateTime.min (1/1/0001). И это вызывает ошибку: Преобразование типа данных datetime2 в тип данных datetime привело к значению вне допустимого диапазона
Свойство "Моя дата" определено как обнуляемое:
public Nullable<System.DateTime> InstallDate { get; set; }
Я хочу, чтобы в базу данных записывалось нулевое значение, если я не предоставил дату
Я знаю, что мог бы в своем методе обновления проверить на 01.01.0001 и отправить ноль, но нужно ли это делать? Есть ли способ обойти эту проблему? Спасибо
EDIT:
Я решил проблему, добавив приведенный ниже код в свой метод обновления:
tank.InstallDate = tank.InstallDate == DateTime.MinValue ? null : tank.InstallDate;
Итак, мой код выглядит так:
public void UpdateTank(Tank tank)
{
using (RetailFuelEntities ctx = new RetailFuelEntities())
{
tank.InstallDate = tank.InstallDate == DateTime.MinValue ? null : tank.InstallDate;
ctx.Tanks.Attach(tank);
ctx.Entry(tank).State = EntityState.Modified;
ctx.SaveChanges();
}
}
Вот мой ObjectDataSource:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetTank"
TypeName="DataAccess.Fuel.EF4.Tanks" DataObjectTypeName="DataAccess.Fuel.EF4.Tank"
DeleteMethod="DeleteTank" InsertMethod="InsertTank" UpdateMethod="UpdateTank">
<SelectParameters>
<asp:ControlParameter ControlID="TextBoxTankId" Name="TankId" PropertyName="Text"
Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
Интересно, можно ли избежать проверки на ноль.