【发布时间】:2023-03-12 01:00:01
【问题描述】:
在我的 SQL Server 数据库架构中,我有一个数据表,其中的日期字段包含默认值
CONVERT(VARCHAR(10), GETDATE(), 111)
这是在手动将记录输入数据库时自动将日期插入新记录的理想选择。
我遇到的问题是,当使用实体框架并映射日期字段时,实体框架会在实例化实体时插入默认值 DateTime.Min。
我无法将 Date 字段映射到可为空的 DateTime,即 DateTime?,我也无法在实体设计器的默认值中使用 CONVERT 或 DateTime.Now.Today,因为它只接受硬编码的常量值。
我当然可以在创建对象时在 C# 中显式设置 DateTime 字段,无论是在代码中、在部分类的构造函数中,还是在保存更改事件期间。
在实际使用存储在数据库表中的默认值计算的情况下,还有其他方法可以实现我想要的吗?
【问题讨论】:
-
您可以尝试将字段设置为自动生成。我从未尝试过,也不确定它的效果如何。
-
我在 EDM Designer 中环顾四周,没有看到任何我可以描述为提供的选项、菜单项或属性。在设计器中哪里可以找到“将字段设置为自动生成”?我假设您指的是设计器,而不是 SQL Server 中的东西。或者您可能指的是“计算列规范”?
-
克雷格,感谢您提供的链接。一个几乎完美的解决方案。它可以工作,但在使用设计器工具更新 EDMX 时会被覆盖,如链接文章中所指出的那样。
标签: c# entity-framework