在函数式编程中,您总是可以通过让函数调用其他函数来添加另一层抽象。当前,我们的存储库为ZB.Repo
。想法是,我们可以用SpecialRepo
替换此模块,并添加修改/增强功能,当您与仓库交互时会发生什么。
不幸的是,Ecto的某些功能(例如关联)尤其为您调用了repo函数。而且,实际上,在Ecto 3中,它们根本不调用repo函数。他们与数据库进行交互,直接绕过您的存储库。 (on_delete: :delete_all
)
这似乎非常有限,对我们不起作用。使用Ecto时,是否无法在应用程序和存储库之间切换?