【发布时间】:2017-02-21 07:36:56
【问题描述】:
我的应用程序正在使用 EF6 数据库优先 方法。数据库中的所有实体都有 2 个公共属性“CreatedDateTime”和“ModifiedDateTime”。
目前,当我执行 SaveChanges() 时,我会根据我是创建新实体还是更新现有实体来明确设置这两个属性。
如果它是一个新实体,则设置两个属性,否则只设置 ModifiedDateTime 属性。
我想知道是否有办法在保存或更新操作时隐式设置这两个属性?
更新 1
我知道我必须重写 Savechanges() 方法,但这里真正的问题是 SaveChanges 需要访问这两个属性。所以我在这里只看到 2 个选项:
1> 使用反射查找实体是否具有这些属性并进行设置。
2> 修改默认的 T4 生成,使其派生所有具有预定义接口的实体。而这个接口将具有这两个属性。 SaveChanges() 方法可以检查实体是否从该接口派生并设置属性。
我绝对不想通过反射来使用选项 1。
在 DB first 方法中是否有任何其他方法或以前有人这样做过?
【问题讨论】:
-
我正在寻找数据库优先方法而不是代码优先
-
你也可以在数据库中设置触发器
-
@jao 我认为这需要在所有表上设置触发器。我有近 100 张桌子
-
T4 选项有什么问题?这正是它存在的原因。否则,您可以对现有 Db 使用代码优先。从长远来看,这是最灵活的选择。 EDMX 并不是真正的前进方向。
标签: entity-framework entity-framework-6