【发布时间】:2019-10-28 11:13:55
【问题描述】:
我正在尝试将一些 DATETIME 从 .NET Core 和 Entity Framework 插入到我的 SQL Server 数据库中,但我遇到了奇怪的行为。
首先,插入的数据取自 VueJS API 调用,我发送的数据是这样的:
...
lastModified: "2019-10-28T10:54:07.556Z"
...
然后,我在 C# 后端收到的内容似乎是正确的,我从我的模型中将它作为对象接收,lastModified 属性似乎还可以:
然后我使用以下代码将我的数据插入到我的数据库中:
using (var context = new TestContext(optionsBuilder.Options))
{
var originalSave = context.SauvegardeIntervention.FirstOrDefault(s => s.IdIntervention == id);
context.Entry(originalSave).CurrentValues.SetValues(save);
context.SaveChanges();
return true;
}
并且插入是正确完成的,但是,当查看我的数据库中插入的内容时,日期时间的时间部分就像被删除了:
但是当我检索 DateTime 属性时,我得到了与之前发送的完全相同的对象...
我的问题是为什么我的datetime 属性在我的数据库中没有时间部分?
我的这个对象的 EF 模型是:
public partial class SauvegardeIntervention
{
public int IdIntervention { get; set; }
public string SauvegardeContent { get; set; }
public bool? CurrentlyInUse { get; set; }
public DateTime? LastModified { get; set; }
public virtual Intervention IdInterventionNavigation { get; set; }
}
对应的SQL Server表是这样的:
【问题讨论】:
-
请出示您的 EF 型号,最好是 minimal reproducible example。
-
什么是列类型?
get属性中是否有自定义逻辑? -
使用实体框架时,builder有什么列类型,例如modelBuilder.Properties
() .Configure(c => c.HasColumnType("datetime2")); -
我添加了SauvegardeIntervention对象的结构,模型有点长,这里不能复制
标签: c# sql-server datetime vue.js