2012-10-28 65 views
0

它正确,因为我不完全理解,但几天后我已经遇到了这些问题。实体框架问题日期时间字段和默认值

我有一个日期时间字段和使用实体框架。

方案:

  1. 当我设置的字段来计算(databasegenerated选项)我不能更新的字段是这样的:

    db.ComputeUnites.Find(this._ComputeGuid).HeartBeat = DateTime.UtcNow; 
        db.SaveChanges(); 
    
  2. 如果我不将它设置为计算,并将其设置为必需。当我尝试添加没有设置字段的新元素时,出现错误。 (这是有道理的,但我已经在服务器上设置的默认值,将其设置为(getutcdate()) - 所以我希望不要设置什么时候会踢

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

我会就像是:当我不在新添加的对象上设置字段时,应该使用默认值。如果我提供或更新字段,它应该使用来自我的c#类的值。我错过了什么?

回答

1

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

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

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

public class ComputeUnit { 
    ... 

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

    ... 
} 
+0

好吧,那我不会麻烦我的头,它的任何更多。谢谢。 –