public CityEntry AddCity(CityEntry city)
        {
            CityDal dal = new CityDal(); 
                return dal.AddCity(city);
        }
        public CityEntry EditCity(CityEntry city)
        {
            CityDal dal = new CityDal(); 
           return dal.EditCity(city);
        }
        public CityEntry DeleteCity(CityEntry city)
        {
            CityDal dal = new CityDal();            
                        return dal.DeleteCity(city);
        }
        public List <CityEntry> SelectCity(CityEntry city,CityIndex index)
        {
            CityDal dal = new CityDal();
            return dal.SelectCity(city,index);
        }
 可以在BLL的构造方法里 去构造DA。这样写会造成代码冗余

解决方案 »

  1.   

    CityDal dal = new CityDal();  
    public CityEntry AddCity(CityEntry city)
      {
      return dal.AddCity(city);
      }
      public CityEntry EditCity(CityEntry city)
      {
      return dal.EditCity(city);
      }
      public CityEntry DeleteCity(CityEntry city)
      {  
      return dal.DeleteCity(city);
      }
      public List <CityEntry> SelectCity(CityEntry city,CityIndex index)
      {
      return dal.SelectCity(city,index);
      }
      

  2.   

    你在BLL层代码中使用ADO.NET,自定义的ORM,或者EF等等,任何一个都可以轻松地操作数据库。就算是当选择数据库改变时,通过在BLL层上使用工厂方法而且换BLL,也比你这里的所谓层DA的开发工作量来的划算。十年前微软模仿java的PetShop的目的是为了对比asp.net的性能,而今天有些人把这个当作“三层”的教条,根本不能跟上形势。在.net界对(采用更加面向对象或者基于对象的)数据访问层的成熟框架早已经研究的非常透彻,远比10年前的java界要强多了。还用搞这种所谓的DA层?
      

  3.   

    AppConfig:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="DAHelper_Path" value ="StyleSoft.Data.Utility"/>
        <add key="DAHelper_ClassName" value="StyleSoft.Data.DAHelper"/>
      </appSettings>
    </configuration>
      

  4.   

    Utility:
    namespace StyleSoft.BLL {
        static class Utility {
            private struct ConstProperty {
                public const string DAHelper_Path = "DAHelper_Path";
                public const string DAHelper_ClassName = "DAHelper_ClassName";
               }        private static Utility() {
                DAHelper = CreateDAHelper();
                }
            private static IDAHelper DAHelper;
            private static IDAHelper CreateDAHelper() {
                string _path = ConfigurationManager.AppSettings[ConstProperty.DAHelper_Path].ToString();
                string _className = ConfigurationManager.AppSettings[ConstProperty.DAHelper_ClassName].ToString();
                return (IDAHelper)Assembly.Load(_path).CreateInstance(_className);
                }        }    
        }//end namespace
      

  5.   

    应用:
    public CityEntry AddCity(CityEntry city){
      return DAHelper.AddCity(city);
      }
      public CityEntry EditCity(CityEntry city){  
      return DAHelper.EditCity(city);
      }
    //......
      

  6.   

    更正:应为:
    public static