Попытка сделать tnet ef обновление базы данных для объекта, который имеет несколько членов DateTimeOffset. Но я получаю следующую ошибку:
Не удалось выполнить преобразование при преобразовании даты и / или времени из строки символов.
Вот модель, которую я пытаюсь сопоставить с sql:
public int SessionId { get; set; }
public int SpeakerId { get; set; }
public string Title { get; set; }
public TimeSpan Length { get; set; }
public DateTimeOffset ScheduledAt { get; set; }
public DateTimeOffset Submitted { get; set; }
public string Description { get; set; }
Ниже приведен мой код dbcontext:
public DbSet<Core.Models.Session> Sessions { get; set; }
protected override void OnModelCreating (ModelBuilder modelBuilder) {
var dateTimeOffsetConverter = new ValueConverter<DateTimeOffset, string> (
v => v.ToString ("yyyy-MM-dd HH:mm:ss zzz"),
v => DateTimeOffset.Parse (v));
modelBuilder
.Entity<Core.Models.Session> ()
.Property (s => s.ScheduledAt)
.HasColumnType ("datetimeoffset");
modelBuilder
.Entity<Core.Models.Session> ()
.Property (s => s.Submitted)
.HasColumnType ("datetimeoffset");
modelBuilder.Entity<Core.Models.Session> ().HasData (MockSessionData.Sessions);
}
Ниже приведен сценарий SQL, который создается для создания поддельных данных:
INSERT INTO [Sessions] ([SessionId], [Description], [Length], [ScheduledAt], [SpeakerId], [Submitted], [Title])
VALUES (1, N'overview of new features of dotnet core 3.1', '00:40:00', '2020-08-03T13:00:00.0000000+01:00', 1, '2019-12-03T13:00:00.0000000+01:00', N'dotnet core 3.1');
Я пытался использовать сгенерированный скрипт, но делал tnet ef, чтобы вставить данные в sql вручную, но я получаю ту же ошибку. Мне удалось заставить его работать, когда я использовал следующий формат, используя метод SQL CAST()
:
CAST('2019-12-03 13:00:00.0000000 +01:00' AS datetimeoffset)
, но я не уверен, как это сделать с помощью ef core или если это вообще возможно?
Я использую sql сервер docker контейнер.
Системные характеристики:
do tnet core 3.1
SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4 (X64)
против кода 1.44.2