我遇到过这样的情况:客户要求我们实现数据访问代码,以根据运行时配置设置使用 Oracle 或 SQL Server 数据库。生产环境使用 Oracle,但开发和 QA 都针对 SQL Server 实例运行。
(我对此没有任何控制权,也没有任何背景了解为什么会出现这种情况,除了 Oracle 是他们的 BI 平台并且开发人员希望使用 SQL Server。)
他们的要求是使用 LINQ-to-SQL / LINQ-to-Oracle 进行所有数据访问。他们需要支持应用程序,并且还不具备跳入 EF 的知识(他们的要求) - 尽管我相信如果我们使用 EF 也会存在同样的问题。
虽然我可以为两个数据库实现 LINQ to XYZ 类,以便可以连接到这两个数据库,但它们不共享公共接口(DataContext 除外),因此我确实无法针对接口进行编码并在运行时插入实际实现。
有什么想法我应该如何处理这个问题?
UPDATE写完这篇文章后,我对 EF 进行了一些调查,在我看来,如果我使用 EF,也会存在同样的问题 - 这将是我的长期目标。
只是一个快速的想法。使用MEF framework
并将您的 DAL 层插入其中。然后根据环境(开发、生产、QA),您可以切换到各个 DAL 层(Oracle、SQL 等)。
如果您想了解MEF,here http://msdn.microsoft.com/en-us/library/dd460648.aspx是一个快速介绍。
不久前我还看到过通用数据访问框架 http://www.deitel.com/ResourceCenters/Programming/ADONET/ADONETDataAccessLayer/tabid/3176/Default.aspx作者:乔迪普·坎吉拉尔。您甚至可以查看一下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)