我们有一个有一些要求的数据模型。我想找到一种方法,使这些要求在使用EF时尽可能透明。
首先,模型必须支持软删除。我已经看到了一些关于这个的问题,我认为这是相对简单的。
其次,我们有一个“仅插入”政策。这意味着没有更新。进行更新时,必须插入新条目。我希望能够将操作视为更新,并让框架将其更改为幕后插入。
第三,由于我们查询时#2,我们需要通过降序标识列进行排序并仅返回第一条记录。即使在执行返回许多记录的查询时也是如此。从本质上讲,这会创建一个版本历史记录。
第四,我们不希望在每个查询中实现此逻辑。让框架为我们做这件事会很好,所以我们可以将每个查询视为普通的CRUD类型事务。
有没有人在EF中实现过这样的数据模型?你用了什么技术?
我知道其中一些可以在Views和/或Sprocs中完成,但如果你使用视图,那么你必须手动维护所有关系(EF无法通过视图读取关系)。触发器也是可能的,但是我们的DBA希望尽可能少的触发器,并且对所有需要很长时间才能完成的触发器进行非常广泛的审查策略。如果我不需要,我宁愿不使用触发器。
我主要使用数据库第一种方法,但我使用dbcontext。
编辑:
鉴于Ladislav的评论如下,我也对任何可能能够满足这些要求的ORM的评论感兴趣。
答案 0 :(得分:1)
存储过程映射需要EDMX。自定义SQL命令和查询映射需要EDMX,没有任何其他商业工具,您还必须手动维护EDMX。