我有DateTime
属性。我需要此属性的默认值为DateTime.Now
。然后我发现你可以在SQL中指定一个属性StoreGeneratedPattern="Computed"
并将其设置为(getdate())
。这工作成功。但我无法在代码中更改此属性。有时我需要将此属性更改为任何DateTime值。但我的更改没有保存。实体框架:StoreGeneratedPattern =“计算”属性
12
A
回答
14
将此属性设置为Computed会告诉EF您不能直接设置该值。你怎么能?此属性为计算列而存在,根据定义,这些列不会保存回数据库。
不幸的是,英孚的“默认值”属性只能设置在编译时已知值,因此不DateTime.Now
此链接提供了一个不错的解决方法:
您也可以在上下文中处理SavingChanges
事件,并在其中添加默认值,但只有在实际调用SaveChanges()
时才会发生,而不是在创建对象时发生。
partial void OnContextCreated() {
this.SavingChanges += new EventHandler(AccrualTrackingEntities_SavingChanges);
}
void AccrualTrackingEntities_SavingChanges(object sender, EventArgs e) {
List<Invoice> Invoices = this.ObjectStateManager
.GetObjectStateEntries(System.Data.EntityState.Added | System.Data.EntityState.Modified)
.Select(entry => entry.Entity)
.OfType<Invoice>().ToList();
foreach(Invoice I in Invoices)
if (I.EntityState == System.Data.EntityState.Added) {
//set default values
} else {
//?? whatever
}
}
相关问题
- 1. 实体框架计算属性问题
- 2. 何时将StoreGeneratedPattern属性添加到ssdl中的属性? (实体框架)
- 3. 实体框架,计算实体字段
- 4. 实体框架中计算属性的数据绑定
- 5. 实体框架代码第一个计算属性
- 6. 实体框架计算属性Odata Feed中未显示
- 7. 覆盖实体框架实体属性
- 8. 实体框架高级计算字段?
- 9. 使用实体框架计算日期?
- 10. 实体框架,MVVM和计算类
- 11. StoreGeneratedPattern不能与DevArt实体框架一起使用?
- 12. 实体框架搜索实体属性和实体ICollection
- 13. 实体框架 - 对象属性
- 14. 实体框架4.1 InverseProperty属性和ForeignKey
- 15. 实体框架4.1虚拟属性
- 16. 实体框架6未映射属性
- 17. 订购导航属性 - 实体框架
- 18. 实体框架7映射属性
- 19. 实体框架获取属性/值对
- 20. 实体框架查询和is_removed属性
- 21. 实体框架 - 通过属性更新
- 22. 实体框架导航属性null
- 23. 实体框架4和公共属性
- 24. 实体框架覆盖属性获取
- 25. 实体框架虚拟属性
- 26. 实体框架导航属性更新
- 27. 实体框架4.1 InverseProperty属性
- 28. 实体框架 - 多导航属性
- 29. 自定义属性与实体框架
- 30. 实体框架关系属性更新?