2015-02-11 113 views
0

我正在使用實體框架代碼優先方法來創建我的數據庫表。下面的代碼在數據庫中創建一個DATETIME列,但我想創建一個DATE列。在實體框架中創建日期字段代碼優先

//[Column(TypeName = "Date")] 
     public DateTime endDate { get; set; } 


     public DateTime startDate { get; set; } 

列屬性不起作用。如何在創建表時創建DATE類型的列?

謝謝!

+0

取消註釋該屬性[Column(TypeName =「Date」)] – Tuco 2015-02-11 18:54:18

+0

我評論它,因爲它不起作用。 – smriti 2015-02-11 18:57:21

+0

然後仍然取消註釋,所以人們很清楚你包括它但不起作用 – Tuco 2015-02-11 18:59:02

回答

0

您可以將實體映射到OnModelCreating方法的DbContext中的表格。我個人更喜歡爲每個實體創建一個映射類,並在此方法中引用它。示例:

編輯 - 更新後的代碼。這是完整的功能代碼。

public sealed class MyDb : DbContext 
{ 
    static MyDb() 
    { 
     System.Data.Entity.Database.SetInitializer<MyDb>(new DropCreateDatabaseAlways<MyDb>()); 
    } 
    public MyDb(string nameOrConnectionString) : base(nameOrConnectionString) 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Configurations.Add(new MyMapper()); 
     base.OnModelCreating(modelBuilder); 
    } 
    public DbSet<TesTme> Items { get; set; } 
} 

public sealed class MyMapper : EntityTypeConfiguration<TesTme> 
{ 
    public MyMapper() 
    { 
     // other mapping info 
     this.ToTable("TestTable"); 
     HasKey(x => x.MyId); 
     this.Property(x => x.MyId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
     Property(x => x.dt).HasColumnType("date"); 
    } 
} 
public sealed class TesTme 
{ 
    public int MyId { get; set; } 
    public DateTime dt { get; set; } 

} 

public sealed class SomeCallerOfTheDbContext 
{ 
    public void TestMe() 
    { 
     // this is the entry point 
     using (var context = new MyDb("connectionStringName")) 
     { 
      var items = context.Items.ToList(); 
     } 

    } 
} 
+0

它不工作。 – smriti 2015-02-11 19:17:22

+0

@smriti - 它確實有效,我在發佈之前測試了代碼,但我會更新它,因此它是一個完整的自包含示例。 – Igor 2015-02-11 19:36:19

+0

其給出的錯誤如 – smriti 2015-02-11 19:39:21