如何使用默认的实体框架和默认日期值

c# entity-framework

在我的SQL Server数据库模式中,我有一个数据表,其日期字段包含默认值

CONVERT(VARCHAR(10), GETDATE(), 111)

这是手动将记录输入数据库时自动将日期插入新记录的理想选择。

我遇到的问题是,当使用实体框架并映射Date字段时,实体框架在实例化实体时插入默认值DateTime.Min。

我无法将Date字段映射到可以为空的DateTime,即DateTime ?,我也无法在Entity Designer的默认值中使用CONVERT或DateTime.Now.Today,因为它只接受硬编码的常量值。

我当然可以在创建对象时在C#中显式设置DateTime字段,无论是在代码中显式地在部分类的构造函数中,还是在保存更改事件期间。

有没有其他方法可以实现我想要的,而实际使用的是存储在数据库表中的默认值计算?

一般承认的答案

我刚刚碰到了这个 - 我通过使用partial方法在Entity的构造函数中设置日期(我需要自动生成的字段)来解决它。这是理想的还是它在所有情况下是否有效还有待观察,但到目前为止它已经解决了我的问题。


热门答案

为EntityObject创建一个分部类,添加一个默认构造函数,并在其中设置默认值。

    public partial class YourDBObject
    {
          public YourDBObject()
          {
               this._DateField = DateTime.Now;
          }
    }



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因