Sql server 如何在数据库(sqlserver)asp.net内核中添加时间部分

Sql server 如何在数据库(sqlserver)asp.net内核中添加时间部分,sql-server,asp.net-mvc,asp.net-core,Sql Server,Asp.net Mvc,Asp.net Core,在asp.net核心MVC应用程序中,我们得到了一个DateTime字段LastUpdate。在sqlserver中,字段的类型是datetime。如果我们在数据库中设置了时间(和日期),信息会正确显示,但在升级之后,时间部分总是设置为零。代码如下所示: [DataType(DataType.DateTime)] public DateTime LastUpdated { get; set; } object.LastUpdated = DateTime.UtcNow; context.Upd

在asp.net核心MVC应用程序中,我们得到了一个DateTime字段LastUpdate。在sqlserver中,字段的类型是datetime。如果我们在数据库中设置了时间(和日期),信息会正确显示,但在升级之后,时间部分总是设置为零。代码如下所示:

[DataType(DataType.DateTime)]
public DateTime LastUpdated { get; set; }

object.LastUpdated = DateTime.UtcNow;
context.Update(object);
谢谢你的帮助

阅读c#代码,我认为问题基本上在于UTC函数的使用,因为在您的表中,数据类型是datetime而不是datetimeoffset,否则,在c#中,您试图发送UTC数据,只是为了测试我的建议,将其更改为

[DataType(DataType.DateTime)]
public DateTime LastUpdated { get; set; }

object.LastUpdated = DateTime.Now;
context.Update(object);
阅读c#代码,我认为问题基本上在于UTC函数的使用,因为在您的表中,数据类型是datetime而不是datetimeoffset,否则,在c#中,您试图发送UTC数据,只是为了测试我的建议,将其更改为

[DataType(DataType.DateTime)]
public DateTime LastUpdated { get; set; }

object.LastUpdated = DateTime.Now;
context.Update(object);

数据库类型为Date,已更改为DataTime,但更改是手动进行的,我们错过了:

entity.Property(e => e.LastUpdated).HasColumnType("date");
应该是:

entity.Property(e => e.LastUpdated).HasColumnType("datetime");

克里斯普拉特和其他人,谢谢

数据库类型为Date,已更改为DataTime,但更改是手动进行的,我们错过了:

entity.Property(e => e.LastUpdated).HasColumnType("date");
应该是:

entity.Property(e => e.LastUpdated).HasColumnType("datetime");


克里斯普拉特和其他人,谢谢

对象中的值设置是否正确?什么类型的对象是
上下文
?是的,值看起来正确,所有其他值(字符串、货币等)都正确存储。LastUpdated也会存储,但只存储日期部分。这里的代码本身就可以工作。问题是数据库列类型不知何故发生了更改,或者有其他一些代码在调整时间部分。@ChrisPratt数据库类型在日期时间之间(几天前)发生了更改,但没有达到预期效果(正如我们现在检测到的)。好吧,我相信现在一切都清楚了,如果投我反对票的人将其还原,这可能会很好:-)在
对象中设置的值是否正确?什么类型的对象是
上下文
?是的,值看起来正确,所有其他值(字符串、货币等)都正确存储。LastUpdated也会存储,但只存储日期部分。这里的代码本身就可以工作。问题是数据库列类型不知何故发生了更改,或者有其他一些代码在调整时间部分。@ChrisPratt数据库类型在日期时间之间(几天前)发生了更改,但没有达到预期效果(正如我们现在检测到的)。好吧,我相信现在一切都清楚了,如果让我投反对票的人恢复投票可能会很好:-)谢谢你的提示,但现在没有什么区别。Now和UtcNow都返回一个日期时间。快速确认的方法是添加一个格式化的日期,以确认问题是否在LastUpdated属性的分配中。SQL探查器显示时间部分未提供:[LastUpdated]=@p8,@p8='2019-03-15'很好,您是否使用DateTime.Now和DateTimeNowUTC以及格式化的harcoded值在SQL配置文件中测试了这两种情况?测试这3个选项谢谢提示,但是现在没有区别。Now和UtcNow都返回一个日期时间。快速确认的方法是添加一个格式化的日期,以确认问题是否在LastUpdated属性的分配中。SQL探查器显示时间部分未提供:[LastUpdated]=@p8,@p8='2019-03-15'很好,您是否使用DateTime.Now和DateTimeNowUTC以及格式化的harcoded值在SQL配置文件中测试了这两种情况?测试这3个选项