主要是传递Con链接对象 在窗体show出来的时候 在窗体的构造函数中传递一个Con  根据传递的Con决定打开的数据库链接 我用的是三层  大神们 怎么办?

解决方案 »

  1.   

    开玩笑吧。“DAL层调用BLL”层,那么你不如自己另外起两个名字,例如“XXA层调用MMB层”。请不要使用“三层”常用的名词。在三层中,目的就是避免BLL层依赖UI层,避免DAL层依赖BLL层。到你这里直接给无视了。
      

  2.   


    如果你的DAL是基于DBConnection抽象的,那么你在BLL层中直接传递DBConnection类型对象就行了。如果你的DAL根本就是针对SQL Server开发,那么你的BLL中就直接传递SqlConnection类型对象就行了。如果有更高的DAL抽象层次,也可以在BLL设计中依赖与更高的层次。总之,在你的BLL中直接调用你的DAL。而不是反过来。
      

  3.   

    很难跟初学者一次性说清楚什么三层,往往要重复3遍以上、从不同角度,你才可能听懂。“三层”是一种软件工程概念,不是什么随便抄一下就能理解的编程技术。因为他对于小工来说,(表面上看起来)是不必要的、是给你添麻烦的。除非你自己懂了,而不是别人给你灌输的,才明白。如果你有所谓的BLL层,那么你的窗体就不需要考虑在什么实例化时去传递什么Con。因为这跟业务毫无关系。如果你说不出来在窗体实例化时有什么业务数据需要传递,那么你就无需去传递什么参数。在你所谓的“我用的是三层”这种想当然的口号,你道是应该给我们讲一下你的UI层如何调用BLL层的。如果你现在纠结于窗口直接去调用什么Con了,这哪里还有什么三层的概念?
      

  4.   

    初學者很容易犯這種錯誤。三層本來就是要減少層次之間的依賴關係。你還在窗體傳個Con过去。这步找抽么。
      

  5.   


    sp1234真是恨铁不成钢呀。如果LZ希望根据传入的连接去打开数据库,那我建议你把链接字符串写到配置文件中(app.config or web.config). 然后你的数据层(DAL)通过读取这个配置文件中的信息去判断如何打开数据库。其它两个层次都不用也不该涉及到数据库连接的任何内容。