具有不同数据库平台的存储库模式/ UOW模式

时间:2015-12-23 03:55:07

标签: c# .net domain-driven-design repository-pattern unit-of-work

在使用不同的数据库技术(在本例中为sql和informix)时,是否有人有过体验存储库/ UOW模式的经验。

我很难因为我不能对informix数据库使用EF,并希望尽可能保持一致,但同时我想避免进行大量的模型转换。

2 个答案:

答案 0 :(得分:1)

存储库模式已经提供了实现此目的所需的灵活性。 为您的存储库定义一个接口。现在添加两个实现,一个用于SQL Server,另一个用于Informix。

您似乎遇到的实际问题不是使用它的模式,而是连接到SQL Server和Informix的技术基础架构。在这里,Dapper可能是一个解决方案,因为据我所知它支持SQL Server和Informix。

或者如果您想将EF与SQL Server数据库保持一致,只需将Dapper与Informix一起使用 - 存储库就可以很好地隐藏您应用程序中的这一事实。

答案 1 :(得分:0)

因为在DDD中,数据库是一个实现细节,如果你不必在一个或另一个ORM解决方案中提供上下文数据,那么 theDmi 提供的是一个非常好的解决方案。利用(至少没有摆弄某些“桥接”对象的创造)。如果有一些商业原因,这些数据应该“分离”到不同的存储库中,出于某种原因需要知道来自Sql Server的内容以及来自Informix的内容,我也会这样做。

但是,如果您宁愿将其全部视为一个数据包,则另一种解决方案是链接Sql Server本身的Informix数据。然后,您应该能够利用视图或存储过程来获取Informix数据,就像Sql Server托管它一样。正如您可能知道的那样,EF提供了一些将对象映射到存储过程和视图的方法。

当然,此解决方案在很大程度上取决于您对Sql Server管理和架构的控制程度。