I am using Entity Framework Code First method to create my database table. The following code creates a DATETIME
column in the database, but I want to create a DATE
column.
[DataType(DataType.Date)] [DisplayFormatAttribute(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")] public DateTime ReportDate { get; set; }
How can I create a column of type DATE
, during table creation?
Try to use ColumnAttribute
from System.ComponentModel.DataAnnotations
(defined in EntityFramework.dll):
[Column(TypeName="Date")] public DateTime ReportDate { get; set; }
The EF6 version of David Roth's answer is as follows:
public class DataTypePropertyAttributeConvention : PrimitivePropertyAttributeConfigurationConvention<DataTypeAttribute> { public override void Apply(ConventionPrimitivePropertyConfiguration configuration, DataTypeAttribute attribute) { if (attribute.DataType == DataType.Date) { configuration.HasColumnType("Date"); } } }
Register this as before:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Conventions.Add(new DataTypePropertyAttributeConvention()); }
This has the same outcome as Tyler Durden's approach, except that it's using an EF base class for the job.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With