1
0
Files
common/AMWD.Common.EntityFrameworkCore/Extensions/ModelConfigurationBuilderExtensions.cs

44 lines
1.4 KiB
C#

#if NET6_0_OR_GREATER
using System;
using AMWD.Common.EntityFrameworkCore.Converters;
using Microsoft.EntityFrameworkCore;
namespace AMWD.Common.EntityFrameworkCore.Extensions
{
/// <summary>
/// Extensions for the <see cref="ModelConfigurationBuilder"/> of entity framework core.
/// </summary>
public static class ModelConfigurationBuilderExtensions
{
/// <summary>
/// Adds converters for the <see cref="DateOnly"/> and <see cref="TimeOnly"/> datatypes introduced with .NET 6.0.
/// </summary>
/// <remarks>
/// As of 2022-06-04 only required for Microsoft SQL server on .NET 6.0.
/// </remarks>
/// <param name="builder">The <see cref="ModelConfigurationBuilder"/> instance.</param>
/// <returns>The <see cref="ModelConfigurationBuilder"/> instance after applying the converters.</returns>
public static ModelConfigurationBuilder AddDateOnlyTimeOnlyConverters(this ModelConfigurationBuilder builder)
{
builder.Properties<DateOnly>()
.HaveConversion<DateOnlyConverter>()
.HaveColumnType("date");
builder.Properties<DateOnly?>()
.HaveConversion<NullableDateOnlyConverter>()
.HaveColumnType("date");
builder.Properties<TimeOnly>()
.HaveConversion<TimeOnlyConverter>()
.HaveColumnType("time");
builder.Properties<TimeOnly?>()
.HaveConversion<NullableTimeOnlyConverter>()
.HaveColumnType("time");
return builder;
}
}
}
#endif