实体框架日期时间字段和默认值的问题

时间:2012-10-28 19:26:51

标签: entity-framework

它是正确的,因为我不完全理解,但我现在已经有几天这些问题了。

我有一个datetime字段并使用实体框架。

方案:

  1. 当我设置要计算的字段(databasegenerated选项)时,我无法像这样更新字段:

        db.ComputeUnites.Find(this._ComputeGuid).HeartBeat = DateTime.UtcNow;
        db.SaveChanges();
    
  2. 当我没有将其设置为计算时,并将其设置为必需。当我尝试添加没有字段集的新元素时,我收到错误。 (这是有道理的,但我已在服务器上设置默认值以将其设置为(getutcdate()) - 所以我希望它在未设置时启动。

  3. 我尝试将其设置为可选,并再次使用默认值,然后我可以添加新对象,但不使用默认值,而是使用0:0:0 00:000(不记得语法正确)插入时间。

  4. 我想要的是:当我没有在新添加的对象上设置字段时,应该使用默认值。如果我提供或更新字段,它应该使用来自我的c#类的值。

    我错过了什么?

1 个答案:

答案 0 :(得分:1)

  

我想要的是:当我没有在新添加的字段上设置字段时   对象,应使用默认值。如果我提供或更新   该字段,它应该使用来自我的c#类的值。

不支持。您可以让它存储生成,EF将使用数据库中设置的值,但从不使用应用程序中设置的值,或者您可以生成应用程序,EF将永远不会使用数据库中的默认值,因为它始终具有默认值您的应用程序发送到服务器。

最简单的解决方法是直接在应用程序中设置正确的默认值,不要使用数据库默认值和存储生成模式:

public class ComputeUnit {
    ...

    public ComputeUnit() {
        HeartBeat = DateTime.UtcNow;
    }

    ...
}