仅在数据库中存储日期而不是时间部分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
类型
无论如何,这真的是一个问题吗? 在某些时候你可能想要时间,