[Required(ErrorMessage = "*")] [Display(Name = "出生日期")] [DataType(DataType.Date)] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")] public DateTime Birthday { get; set; }
上面的代码生成的SQL 数据库 Birthday字段的数据类型是datetime,为什么不是date
怎么才能生成 数据类型:date,而不是datetime。
另外可以用DBFirst看下,它生成的字段是怎样的。
@幻天芒: 早试了,结果就是生成的代码就是public DateTime Birthday { get; set; },数据库字段数据类型date和datetime都是代码public DateTime Birthday { get; set; }
@时光刺客: 那暂时就只能忍忍了。还有VS12,用的是LocalDB。
你用的数据库是什么数据库?不同数据库这种方式生成的数据字段的时间类型会不一样的。
Visual Studio 2012自带的,应该是SQL Server Express 2012
兄弟,你看看ADO.NET怎么处理的,你就应该有所理会
这个问题可以实现,使用fluent API就可以。
先写一个Configuration
public class TestMap : EntityTypeConfiguration<TestT>
{
public TestMap()
{
this.Property(t => t.TheDate).HasColumnType("Date");
}
}
然后在 DbContext中使用这个configuration:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TestMap());
}
我实际测试了一下,最后数据库生成出来就是字段的数据类型就是"date"
我在EF6.0的环境下测试通过。