现在做的一个项目中使用了两种数据库,MongoDB和SQL Server,SQL Server使用的是EntityFramework做数据操作,也是一般的Repository的模式,于是有一个IRepository的接口,然后对应有两个实现:EfRepository和MongoDBRepository,在Service层只是依赖这个IRepository接口,也就是只能拿到基本的CRUD方法和一个IQueryable的集合做复杂查询,但是感觉这样的话有很多底层点的数据操作用不了了,不知道有没有什么好的设计,当然,直接让Service依赖具体的Repository实现也是可以的,但是感觉不妥。。。不知道有没有说清楚。。
……我准备弄一个和你的想法类似。不过没有公开IQueryable这个对象。感觉这个对象的权限太大了。而且觉得做一些发杂操作可读性不是很高。而是在IRepository接口上公开各个方法(相比IQueryable可读性高一些)。。但是也会存在一个IRepository中可能有一部分功能想使用MSSQL,一部分想使用MongoDB数据库。。没想到什么好办法,只有在前期规划的时候根据使用数据库的不同分两个IRepository来写!
你搭的这个框架是开源的吗?可否提供参考下!
@滴答的雨(何雨泉): 我学着NopCommerce写的,公司项目不方便提供。。
两个Repository,我觉得也是这样搞,因为一个Model存在哪个数据库这个应该是已经确定了的。。
仓储模式这样设计不好吧?
要是这样定义的,仓储的单位是什么?
之前在MongoDB萌阔论坛上看到过关于SQL Server和MongoDB对比的文章,你可以去看看,希望能帮助到你。
萌阔论坛:http://forum.foxera.com/mongodb/topic/165/查询语句对比-sql-server-v-s-mongodb?un=Jesse