【发布时间】:2011-08-17 04:27:32
【问题描述】:
我有一个列类型为 datetime2 的表(它是 datetime,但我看到的 EF 与 datetime2 一起使用)。
我已将其设置为非空,默认值为SYSDATETIME()。为了正常工作,我已将映射到 EF 模型中此列的属性设置为Computed。现在,当我没有在该属性中设置任何值时,我可以在表中看到正常记录,但是当我尝试从代码中设置值时,它会忽略它并在所有情况下设置 SYSDATETIME()。
如何在模型中的属性中没有值时插入在数据库中设置的默认值,如果属性的值不为空并设置,则如何插入?
编辑:这里是示例代码
.....
ActionsJournal actionsJournalEntry =
TestFactory.CreateActionEntry(.....);
if (/* some condition */)
{
actionsJournalEntry.CreatedDate = DateTime.Now.AddDay(30); // else it will be null
}
ent.ActionsJournals.AddObject(actionsJournalEntry);
ent.SaveChanges();
....
【问题讨论】:
-
举个例子,你插入 datetime2 值。
-
@Kak Ylia ...您需要代码示例或业务案例吗?以及它与问题的关系如何?
-
@NDeveloper,代码示例总是与 SO 上的问题相关。我也想看一些代码来演示这个问题。
-
@Inuyasha 问题现在包含示例代码...问题是它不关心 actionsJournalEntry.CreatedDate 中是否有任何值,它只是插入数据库默认值,即 SYSDATETIME()。
-
你的映射怎么样?在SSDL 中,有两个不同的属性,
StoreGeneratedPattern和DefaultValue。如果StoreGeneratedPattern是Computed,那么您的意思是数据库总是 设置/重置此值。
标签: c# .net entity-framework