使用 EFW 和 ViewModel 插入数据库时​​无法将类型 'System.DateTime?' 隐式转换为 'System.DateTime'

Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime' when inserting into Database using EFW and ViewModel

我正在处理这个 ASP.NET Core MVC 项目,当我收到此错误时,我试图将 form 中的值保存到 Database 中:

Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)

我在 `ViewModel:

中使用 ?FromDateToDate 设置为 nullable

ViewModel:

public class ILViewModel
{
    ...
    ...
    public DateTime? FromDate { get; set; }
    public DateTime? ToDate { get; set; }
}

Controller - POST Method 中,我按以下方式向 Database 添加值:

控制器:

if (ModelState.IsValid)
{
    ...
    historyObj.FromDate = locationsHistoryVM.FromDate;
    historyObj.ToDate = locationsHistoryVM.ToDate;
}

怎么办?

您需要从可为空的对象中获取值。那么你就不会得到错误

if (ModelState.IsValid)
{
    ...
    historyObj.FromDate = locationsHistoryVM.FromDate.Value;
    historyObj.ToDate = locationsHistoryVM.ToDate.Value;
}