«Преобразование типа данных datetime2 в тип данных datetime привело к значению вне допустимого диапазона».как я могу исправить - PullRequest
0 голосов
/ 21 июня 2019

Я искал об этой проблеме, было много вопросов об этом, но все ответы не были полезны, это не решило мою проблему. Во-первых, я не могу внести какие-либо изменения в базу данных, я должен сохранить определение столбца в базе данных, так как я могу решить эту проблему?

ОПРЕДЕЛЕНИЕ БАЗЫ ДАННЫХ:

[DeletedDate] [datetime] NULL,

C # ПРЕДСТАВИТЕЛЬСТВО КОДА:

public DateTime? DeletedDate { get; set; }

Я получил ошибку:

Преобразование типа данных datetime2 в тип данных datetime привело к значению вне допустимого диапазона. Заявление было прекращено. в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection, действие`1 wrapCloseInAction) ....

Я пробовал это, но у меня ничего не работает

[Column(TypeName = "datetime2")]
 public DateTime? PropertyName { get; set; }

РЕДАКТИРОВАТЬ: Проблема была в том, что я пытался отправить 0001/01/01 ... в значение datetime в sql. и это вызвало проблему.

API-интерфейс FLUENT решил мою проблему.

entity.Property(e => e.CreatedDate).HasColumnName("CreatedDate").HasDefaultValueSql("(getdate())");
entity.Property(e => e.UpdatedDate).HasColumnName("UpdatedDate").HasDefaultValueSql("(getdate())");

1 Ответ

0 голосов
/ 21 июня 2019

Ваша собственность DeletedDate содержит значение, которое меньше поддерживаемого значения для SqlDateTime.MinValue.Value, перед сохранением или обновлением базы данных попробуйте

if(DeletedDate < SqlDateTime.MinValue.Value)
 DeletedDate = SqlDateTime.MinValue.Value
...