Force Entity Framework 5 to use datetime2 data typ

2019-01-13 22:04发布

问题:

Is it possible to globally set Entity Framework DbContext to use datetime2 for all properties that are System.DateTime when using Code-First model?

I can do this for each column by using HasColumnType() method, but for an existing codebase I would like a global solution.

回答1:

Since EF6 has been out for quite a while now and this question still shows up in searches, here is the way to use custom conventions to set the SQL type. Within OnModelCreating method in your DbContext class do:

modelBuilder.Properties<DateTime>()
    .Configure(c => c.HasColumnType("datetime2"));


回答2:

Not in EF5 but EF6 (currently in alpha version) allow this with custom conventions. For EF5 you would need some custom convention based framework based on reflection which would add HasColumnType calls to model builder through reflection - check for example EF Code First Extras (it claims to have support for pluggable conventions).