约会时间?当我调用.ToList将它转换为字符串时,在EF模型中似乎不可为空

时间:2016-05-02 15:32:05

标签: c# .net asp.net-mvc entity-framework datetime

我有一个控制器返回我模型中的所有列。但是,当我更改模型,因此我的Date字段是DateTime类型时,我得到以下错误。

  

“'Battle'上的'StartDate'属性无法设置为'System.String'值。您必须将此属性设置为'System.DateTime'类型的非null值。

我所做的只是将StartDate属性更改为DateTime?而不是在它前面的一个字符串,它打破了。如果我把它改回字符串,它运作良好。

继承我的模特

  public class Battle
  {

    [Key]
    public int BattleID{ get; set; }
    public string General { get; set; }
    public DateTime? StartDate { get; set; }
 }

继承我的控制器方法

public IHttpActionResult GetAllBattles()
    {
        using (BattleContext db = new BattleContext())
        {
            var query = (from results in db.Battle
                         select results);

            List<Battle> output = new List<Battle>();
            output = query.ToList();
            return Ok(output);
        }

    }

请注意,在将StartDate从字符串更改为可为空的DateTime之前,此工作正常。 (我希望它是一个DateTime,所以我可以在其他方法中轻松找到50或100年内的战斗)。

2 个答案:

答案 0 :(得分:0)

所以我的代码中唯一的区别(我的日期允许空值)是我的模型中的这个限定语句:

[DataType(DataType.Date)]
public DateTime? DateModified { get; set; }

所以也许尝试一下?如果这不起作用,请在下面评论,我可以查看我项目的其他部分。

答案 1 :(得分:0)

我犯的错误在这里非常愚蠢。我不小心将该列声明为我的SQL数据库中的字符串而不是日期时间。修复它解决了这个问题。