gpt4 book ai didi

.net - 如何解决 EDF 4.1,Code First C# DateTime datetime2 与 datetime 不兼容

转载 作者:行者123 更新时间:2023-12-01 02:38:21 24 4
gpt4 key购买 nike

我的 Code First 型号有 System.DateTime特性。当调用数据库种子代码时,它会抛出此异常:

SqlException (0x80131904): The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.



我正在创建一个新的 DateTime带有构造函数的对象。 Code First 正在创建数据库模式。我如何克服 Code First 中的这个明显错误?我对我的数据类型并不特别。我只需要存储一个日期,以及可选的一天中的一个时间,但并不重要。

我搜索并阅读了很多帖子,但没有一个出现此错误的帖子指明它们来自 CodeFirst 生成的数据方案。我发现的最接近的答案涉及更改 ProviderManifestTokenedmx文件,但我的项目没有 edmx文件。我没有使用设计器,我使用的是 Code First。

最佳答案

英孚 map DateTime在 .NET 中到 datetime在 SQL Server 中。类型有不同的范围:datetime只能存储晚于 1750 年左右的日期。如果您尝试存储 DateTime在您的实体中使用较早的日期或统一的 DateTime (第 1 年)您会收到异常,因为 SQL Server 无法存储它。

解决方案:

  • 要么确保您要存储的日期晚于 1750
  • 或映射你DateTime属性明确到 datetime2在 SQL Server 里面有更广泛的范围。如何使用 Fluent API 定义此映射的示例:https://stackoverflow.com/a/8044310/270591

  • 实际上我也曾期待默认映射到 datetime2因为它更适合 DateTime在 .NET 中。但出于某种原因,他们决定使用 datetime作为默认值。

    关于.net - 如何解决 EDF 4.1,Code First C# DateTime datetime2 与 datetime 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230244/

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