我有一个控制器返回我模型中的所有列。但是,当我更改模型,因此我的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年内的战斗)。
答案 0 :(得分:0)
所以我的代码中唯一的区别(我的日期允许空值)是我的模型中的这个限定语句:
[DataType(DataType.Date)]
public DateTime? DateModified { get; set; }
所以也许尝试一下?如果这不起作用,请在下面评论,我可以查看我项目的其他部分。
答案 1 :(得分:0)
我犯的错误在这里非常愚蠢。我不小心将该列声明为我的SQL数据库中的字符串而不是日期时间。修复它解决了这个问题。