You can specify the type in Fluent API:
modelBuilder.Entity<Book>()
.Property(f => f.DateTimeAdded)
.HasColumnType("datetime2");
This creates a datetime2(7)
column in the database. If you want to finetune the precision you can use:
modelBuilder.Entity<Book>()
.Property(f => f.DateTimeAdded)
.HasColumnType("datetime2")
.HasPrecision(0);
... for a datetime2(0)
column in the DB.
However, the code you have shown in your question works because the datetime
type allows to store dates back to around 1750. The exception occurs only for earlier dates. A common reason for this exception is an uninitialized DateTime
property because it represents the year 0001 which can't be stored in a datetime
column in SQL Server.
There is no corresponding attribute to define this with data annotations. It's only possible with Fluent API.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…