复杂项目不能把SQL语句直接写到程序里,不模块化、难以维护,应该采用三层架构。当然不是所有公司都这么做,还是看公司习惯。Web开发中的三层架构也是同样的结构。
模型层Model;数据访问层DAL(Data Access Layer);业务逻辑层BLL(business logic layer )。实体类就是Model;对数据进行操作的代码写在DAL中,一般就是SQL语句,DAL只有对数据的操作,没有“如果金额大于20则不能删除”这样的逻辑;BLL调用DAL中的代码进行逻辑操作,比如“如果金额大于20则不能删除”。SQL语句一般只应该出现在DAL中。
三层:UI(界面,User Interface)、BLL、DAL。Model是在三层之间进行数据传递的。UI层调用BLL、BLL调用DAL,数据用Model传递,UI不能直接调用DAL。
获得自增字段值的两种方法:(1)"insert ...; select @@identity" (2)"insert into ....) output inserted.id values"
三层的优点:最主要的优点是代码分离,每一块写自己的代码。UI层和BLL打交道,不用处理SQL语句;UI层(界面代码,就是写到Form中的代码)访问的都是强类型的对象,而不是row["age"]这样的东西,开发更方便,更不容易出错。一般三层的代码都是一个人写;UI层中没有复杂的代码,解耦,容易改变UI层技术。例如:如果由WinForm改成asp.net只要修改UI即可,如果由SQL Server改成Oracle只要修改DAL即可。