Exception thrown when using PropertyType<DateTime> with HasColumnType('time')

Open
#21,481 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
csharp
Domain
databases

Research direction

Start by reproducing the issue from the reported Property configuration using HasColumnType("time") with the Microsoft.EntityFrameworkCore.SqlServer provider. Trace the SQL Server provider's type-mapping validation to identify why this combination is rejected. Done means the supported configuration no longer throws incorrectly and migrations preserve the database column's time type.

Written by the indexing model from the issue text.

Description

area-type-mapping customer-reported

When configuring an Entity to have a Property of Type DateTime and a Column Type of Time, an exception is thrown saying the database provider does not support the datatype.

builder.Property<System.DateTime>(x => x.StartTime).HasColumnName(@"StartTime").HasColumnType(@"time").IsRequired()

Changing the configuration to tell EF Core that the column type is datetime while leaving the database column as time works, but this would change the datebase type when migrating...

builder.Property<System.DateTime>(x => x.StartTime).HasColumnName(@"StartTime").HasColumnType(@"datetime").IsRequired()

SQL Server supports populating Time fields with DateTime and DateTime2 values. Why is this functionality blocked by Entity Framework Core?

EF Core version: 3.1
Database provider: Microsoft.EntityFrameworkCore.SqlServer
Target framework: .NET Core 3.1
Operating system: Win 10
IDE: Visual Studio 2019 16.3

Dominant language
C#
Stars
14.8k
Forks
3.4k
Avg merge
2d 5h
Merged PRs (30d)
134

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/efcore

All issues in dotnet/efcore

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.