新野网站建设,深圳网络开发,做网站现在用什么语言,检察院网站建设标书前言
在做数据库设计时#xff0c;为了方便进行数据追踪#xff0c;通常会有几个字段是每个表都有的#xff0c;比如创建时间、创建人、更新时间、更新人、备注等#xff0c;在存储这些时间时#xff0c;要么存储 WEB 服务器的时间#xff0c;要么存储数据库服务器的时间…
前言
在做数据库设计时为了方便进行数据追踪通常会有几个字段是每个表都有的比如创建时间、创建人、更新时间、更新人、备注等在存储这些时间时要么存储 WEB 服务器的时间要么存储数据库服务器的时间有时候WEB 服务器的时间和数据库服务器的时间可能会不一致所以为了精准通常还是倾向于存储数据库服务器的时间如果是 ASP.NET使用原始 SQL 进行操作我们可以在数据库中把这些时间字段设置为时间默认值如 getdate()存储数据操作时忽略这些时间字段数据库就会自动把这些字段填充为数据库服务器的当前时间但是由于 EF 是操作整个数据表对象所以无法沿用以前的作法需要另找其它方法。
本文分享 EF DB First 和 Code First 两种模式下 DateTime 字段各自如何存储数据库服务器当前时间的方法。
Database First 配置步骤 打开 edmx 文件 右键表 DataTime 字段选择 属性打开字段属性窗口 在 常规-StoreGeneratedPattern 下拉框选择 Computed 保存 这样存储数据时就能取数据库的时间默认值了如果用的是 SQLServer取的就是 getdate() 反映在 edmx xml 中如 Property NameCreationTime Typedatetime Nullablefalse StoreGeneratedPatternComputed /Property NameCreationTime TypeDateTime Nullablefalse Precision3 annotation:StoreGeneratedPatternComputed /注从数据库更新模型不会影响此配置
Code First
在数据表实体的时间字段添加这个特性即可 [DatabaseGenerated(DatabaseGeneratedOption.Computed)]如
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime CreationTime { get; set; }总结
希望本文分享的方法对您有所启发如何您有更好的方法欢迎留言讨论
往期精彩
分享一个 .NET EF 6 扩展 Where 的方法分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子不会使用 EF Core 的 Code First 模式来看看这篇文章手把手地教你EF Core 性能很差试试这 6 个小技巧如何在 EF Core 中使用乐观并发控制EF Core 在实际开发中如何分层 我是老杨一个奋斗在一线的资深研发老鸟让我们一起聊聊技术聊聊程序人生共同学习共同进步