【发布时间】:2012-03-11 20:02:44
【问题描述】:
我们的数据模型有一些要求。我想找到一种方法,让这些要求在使用 EF 时尽可能透明。
首先,模型必须支持软删除。我已经看到了一些与此相关的问题,我认为这会相对简单。
其次,我们有“仅插入”政策。这意味着没有更新。进行更新时,必须改为插入新条目。我希望能够将该操作视为更新,并让框架将其更改为幕后的插入。
第三,由于#2,我们在查询时,需要对标识列进行降序排序,只返回第一条记录。即使在执行返回许多记录的查询时。本质上,这会创建版本历史记录。
第四,我们不想在每个查询中都实现这个逻辑。让框架为我们做这件事会很好,这样我们就可以将每个查询视为普通的 CRUD 类型事务。
有人在 EF 中实现过这样的数据模型吗?你使用了哪些技术?
我知道其中一些可以在视图和/或 Sprocs 中完成,但如果您使用视图,则必须手动维护所有关系(EF 无法通过视图读取关系)。触发器也是一种可能性,但我们的 DBA 想要尽可能少的触发器,并且对所有需要很长时间才能完成的触发器有非常广泛的审查政策。如果没有必要,我宁愿不使用触发器。
我主要使用数据库优先方法,但我使用 dbcontext。
编辑:
鉴于下面的 Ladislav 的 cmets,我也对可能能够处理这些要求的其他 ORM 的任何 cmets 感兴趣。
【问题讨论】:
-
在#4,您似乎总是希望在特定实体上实现此功能,而不是基于每个查询,对吧?那么它应该是一个实体类的可配置属性?
-
@GertArnold - 我不明白你的问题。实体是 POCO,因此它们不控制用于填充它们的查询的逻辑。
-
我以为您希望某些类具有定期更新和一些经过审核的“仅插入”更新(在任何地方进行配置)。可能不会。
标签: orm entity-framework-4 data-modeling dbcontext