首页新闻找找看学习计划

请教各位高手一个Entity Framework的问题

0
悬赏园豆:5 [待解决问题]
[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。

时光刺客的主页 时光刺客 | 初学一级 | 园豆:60
提问于:2013-09-24 10:47
< >
分享
所有回答(4)
0
幻天芒 | 园豆:36594 (高人七级) | 2013-09-24 11:05

另外可以用DBFirst看下,它生成的字段是怎样的。

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2013-09-24 11:06

@幻天芒: 早试了,结果就是生成的代码就是public DateTime Birthday { get; set; },数据库字段数据类型date和datetime都是代码public DateTime Birthday { get; set; }

支持(0) 反对(0) 时光刺客 | 园豆:60 (初学一级) | 2013-09-24 12:11

@时光刺客: 那暂时就只能忍忍了。还有VS12,用的是LocalDB。

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2013-09-24 13:03
0

你用的数据库是什么数据库?不同数据库这种方式生成的数据字段的时间类型会不一样的。

allon6318 | 园豆:858 (小虾三级) | 2013-09-24 11:19

Visual Studio 2012自带的,应该是SQL Server Express 2012

支持(0) 反对(0) 时光刺客 | 园豆:60 (初学一级) | 2013-09-24 12:12
0

兄弟,你看看ADO.NET怎么处理的,你就应该有所理会

【秦时明月】 | 园豆:803 (小虾三级) | 2013-09-24 12:44
0

这个问题可以实现,使用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的环境下测试通过。

ocean | 园豆:824 (小虾三级) | 2013-11-04 22:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册