You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
目前仓储中下面两个方法支持原生SQL查询,是通过Dapper实现的。
然而实在项目开发过程中总有那么有一些操作(可能占比很低)需要通过原生SQL去做,比方说复杂查询,大批量更新(每条记录更新的内容不同),大批量插入,大批量删除,直接调用存储过程,直接调用视图等等,极少数情况下不管通过哪种ORM都不如直接拼SQL强;再或者同一个服务中mysql是核心业务库,但是除了核心业务库,还还一个或多个其他库需要查询,这些库有可能是sqlserver,或者oracle。如果这些情况目前仓储都无法应对。
我现在有二个思路:
不管哪种思路都是先在Adnc.Infra.Repository定义接口
IAdoRepository.cs
AdoRepository
类实现IAdoRepository
接口以及新增其他一些辅助类。这样的话就非常灵活,只需要注册AdoRepository到容器,在需要使用的application层注入IAdoRepository接口就可以了。数据库链接可以通过ChangeOrSetDbConnection方法调整。不好地方的就是如果需要同时使用EF仓储与原生SQL需要注入EF的仓储又需要注入IAdoRepository。怎样才是好的选择?
Beta Was this translation helpful? Give feedback.
All reactions