它是正确的,因为我不完全理解,但我现在已经有几天这些问题了。
我有一个datetime字段并使用实体框架。
方案:
当我设置要计算的字段(databasegenerated选项)时,我无法像这样更新字段:
db.ComputeUnites.Find(this._ComputeGuid).HeartBeat = DateTime.UtcNow;
db.SaveChanges();
当我没有将其设置为计算时,并将其设置为必需。当我尝试添加没有字段集的新元素时,我收到错误。 (这是有道理的,但我已在服务器上设置默认值以将其设置为(getutcdate()
) - 所以我希望它在未设置时启动。
我尝试将其设置为可选,并再次使用默认值,然后我可以添加新对象,但不使用默认值,而是使用0:0:0 00:000(不记得语法正确)插入时间。
我想要的是:当我没有在新添加的对象上设置字段时,应该使用默认值。如果我提供或更新字段,它应该使用来自我的c#类的值。
我错过了什么?
答案 0 :(得分:1)
我想要的是:当我没有在新添加的字段上设置字段时 对象,应使用默认值。如果我提供或更新 该字段,它应该使用来自我的c#类的值。
不支持。您可以让它存储生成,EF将使用数据库中设置的值,但从不使用应用程序中设置的值,或者您可以生成应用程序,EF将永远不会使用数据库中的默认值,因为它始终具有默认值您的应用程序发送到服务器。
最简单的解决方法是直接在应用程序中设置正确的默认值,不要使用数据库默认值和存储生成模式:
public class ComputeUnit {
...
public ComputeUnit() {
HeartBeat = DateTime.UtcNow;
}
...
}