.NET将IQueryable公开为一种通用模式,用于查询来自各种数据源(包括存储库)的数据,并且它非常强大。 ASP.NET Web API将IQueryable资源轻松地公开为GET方法的OData接口。但是,在我看来,每个数据访问层解决方案(包括实体框架)都实现并公开了自己的专有接口,用于插入,更新和删除与存储库或数据源关联的数据。因此,虽然IQueryable对于选择/查询数据是一致的,但IQueryable不适用于创建,变异或删除数据,除非将查询的数据转换为查询输出。
出于我自己的目的,包括交换DAL的能力,我可能会拼凑一个小的包装器接口库来强化某种CRUD接口。它可能看起来像HTTP动作动词语义,并享受IQueryable作为GET / Read的基础。 但在我这样做之前,我想询问BCL中是否有任何内容,如果没有社区中大量使用的内容,那么通常存在用于一般描述选择/查询之外的CRUD接口(超出IQueryable)?
(如果没有,作为一个侧面思考[这不是我的问题的正式部分],为什么不呢?它是2014年.O / RM不再是性感的,我们应该过去了。但显然不是。我唯一的猜测是“因为保留关系完整性或突变状态意识的不同期望”,所以。“