解决方案 »

  1.   

    换不同的数据库,就是要求你的 ORM 之类东西本身具有的功能。例如如果你用 EF,那么也可以看看它如何处理不同数据库的。你使用的访问数据库的方法,比如说 ADO.NET,没有“不同数据库”适配功能吗?可能是你没有注意到吧!你所谓的 IDAL 带来的工作量,跟一个 IBLL 带来的工作量,是一样的。以前专门给国营单位做OA的一些小公司喜欢搞“切换SQL Server、MySQL、Oracle”的噱头。而这种东西其实就是皮包公司的噱头,真实区别并不大。实际上现在并不需要太多考虑“随时改变数据库”的问题,只要注意“一定要使用一个免费的、并且大公司(例如淘宝)确实使用过的数据库”就足够了。我使用 MongoDB。
      

  2.   

    以前一些做 OA 的小公司,销售员把话说得“天花乱坠”的似乎什么都能干,可是程序员做东西时只会纠结什么“三层、增删改查”,产品设计上其实很少有真正有能引导用户创意、特别方便用户的思路。于是技术噱头也不过就是那么一两种。那是因为产品设计上创意太贫乏。如果不是仅仅靠“关系”而做的项目,如果有一个产品级的产品,用户就不会被个别低级的维护人员来指定“Oracle还是SQL Server数据库”了,因为领导就敢指令下级“必须上线”了。你做产品设计时也就有点稳定性,不会以“切换数据库”为噱头了。
      

  3.   

    感谢大牛 sp1234。
    真实环境是,软件需要读取其它软件(所以数据库会有各种各样的)的客户和其它资料。
    其实我们本身配套的数据库就是SQL Server,客户觉得上两套要维护两套客户资料不方便,所以才出现我的问题。
      

  4.   

    比方:客户资料是需要调现有的OA或CRM等的。
      

  5.   

    每个ORM提供的功能接口都不同,甚至差异巨大,根本不可能抽象出一个通用的ADO.NET那样的IDAL出来。
      

  6.   

    分层和ORM没太大关系,一个是代码结构,一个是对象映射和持久化功能。
    IDAL的话,作为接口定义的是一些行为,这些行为完全可以包含ORM。