gpt4 book ai didi

c# - 如何使用 DbContext 和 SetInitializer 修复 datetime2 超出范围的转换错误?

转载 作者:IT王子 更新时间:2023-10-29 03:33:08 30 4
gpt4 key购买 nike

我正在使用 Entity Framework 4.1 中引入的 DbContext 和 Code First API。

数据模型使用基本数据类型,例如stringDateTime。在某些情况下,我使用的唯一数据注释是 [Required],但它不在任何 DateTime 属性上。示例:

public virtual DateTime Start { get; set; }

DbContext 子类 也很简单,看起来像:

public class EventsContext : DbContext
{
public DbSet<Event> Events { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Event>().ToTable("Events");
}
}

初始化程序将模型中的日期设置为今年或明年的合理值。

但是,当我运行初始化程序时,我在 context.SaveChanges() 处收到此错误:

The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.

我根本不明白为什么会这样,因为一切都很简单。我也不确定如何修复它,因为没有要编辑的 edmx 文件。

有什么想法吗?

最佳答案

您必须确保 Start 大于或等于 SqlDateTime.MinValue(1753 年 1 月 1 日)- 默认情况下,Start 等于 DateTime.MinValue(0001 年 1 月 1 日)。

关于c# - 如何使用 DbContext 和 SetInitializer 修复 datetime2 超出范围的转换错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050906/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com