我正在尝试设计一种使用ORM工具进行依赖注入的方法,以便在需要时可以轻松替换它们。问题是,将orm代码与程序分开似乎是不可能的。即使我能够分离诸如保存,获取等功能,我也无法替换浮动的实体实例。
我想知道我想要实现的目标是否合理。如果是这样,有什么好方法可以达到这个目的?
答案 0 :(得分:0)
无论你做什么,你都会依赖你的应用程序的某个级别/层。我的意思是,只要你引入第三方代码,它就需要在某处连接到你的应用程序。
您可以使用存储库模式并在解决方案中创建存储库项目,并将所有与LLBLGen相关的代码保存在那里。您可以通过它进行所有数据库交互,并且必须将一些DTO样式的对象传递给它以避免泄漏。您还必须在存储库中执行LLBLGen与DTO之间的所有映射。
所以,如果我们谈论的是webapp,你可能会有像WebAPI< - >这样的东西。业务层< - >存储库层< - > ORM
另外,实际上你不太可能决定将ORM替换为另一个(特别是LLBLGen因为它是一个非常好的ORM),所以你可能会略微过度思考这一点。你应该在前面明智地选择一个ORM并坚持下去。如果你已经知道你想稍后换掉它,为什么不马上做呢?而且你通常不会使用像LLBLGen实体对象这样的DI(不是说你不能)。这有点像是说你想在日期时使用DI,以防你决定使用Noda Time来处理日期。 DI的主要目的是使您的代码可测试,即使您的业务层中有LLBLGen实体,这也不会成为问题,您仍然可以模拟repo方法并很好地测试业务层。
一些澄清:
DTO =数据传输对象
DI =依赖注入