仅在数据库中存储日期而不是时间部分C#

我有一个测试类和一个ExecutionDate属性,它只存储日期,但是当我们使用[DataType(DataType.Date)] ,它也将时间部分存储在数据库中,但我只想要日期部分。

 public class Test { [Key] public int Id { get; set; } [DataType(DataType.Date)] public DateTime ExecutionDate { get; set; } } 

有没有办法只使用Entity Framework在db中存储日期时间部分? 请帮我….

我在使用[DataType(DataType.Date)]时添加了快照,它存储时间部分00:00我要删除它

在此处输入图像描述

我想您正在尝试指定数据库列类型。 您可以使用本文中描述的数据注释。

这是一个例子:

 [Table("People")] public class Person { public int Id { get; set; } [Column(TypeName = "varchar")] public string Name { get; set; } [Column(TypeName="date")] public DateTime DOB { get; set; } } 

默认情况下,string被转换为nvarchar,我们在这里已经改变了。 此外,默认情况下,在SQL Server中映射到datatime的日期时间(这是您提出的问题)更改为仅存储日期部分而不存储DateTime值的时间部分的DateTime

正如David上面所说,一旦你将这些数据带入应用程序,它将是一个DateTime,并在日期中添加了时间戳。 如果您将日期存储为字符串并使用Convert将更改为DateTime以进行任何操作,这也会产生相同的结果:

 string date = "2015-11-17"; var dateTime = Convert.ToDateTime(date); 

除非您想在应用程序中操作字符串以避免时间戳,否则您只能使用DateTime。 但是,出于显示目的,您始终可以格式化日期并删除时间戳:

 var dateTime = DateTime.Now; var formatDate = dateTime.ToString("yyyy-MM-dd"); 

如果您在数据库00.00.00中使用DateTime,则将DateTime更改为数据库中的nvarchar(10)将由数据库自动分配

 string date = DateTime.Today.ToShortDateString(); 

将数据库上的数据类型从Datetime更改为Date类型

无论如何,这真的是一个问题吗? 在某些时候你可能想要时间,