BLL, DAL, OBJ e arquitetura de 3 camadas

Minha pergunta é sobre a arquitetura de 3 camadas.

Meu projeto é brevemente algo como o abaixo, no entanto o que me incomodou é depois de inserir uma nova coluna dentro do meu banco de dados, eu tenho que atualizar todos esses campos, exceto para o BLL. Na camada de apresentação, eu criei um OBJ, bem como dentro do DAL, mais dentro do DAL, há uma consulta SQL. Eu tenho que atualizar todos esses campos manualmente.

Se eu fizer isso da maneira 'normal', coloco todos dentro da camada de apresentação e atualizo tudo em um só lugar.

Estou aplicando esta arquitetura de 3 camadas corretamente e quais são as vantagens de usar essa arquitetura em camadas?

Minha segunda pergunta é:

Dentro do DAL, eu coleto os dados via _view. O que eu me pergunto, eu deveria escrever outro BOboj para cada visão? Eu já tenho uma classe BOboj mas não contém todos os campos.

Ao inserir dados, eu tenho que usar o meu BOboj, no entanto, ao listar dados, estou usando views, nesse caso, devo criar outra classe BOboj_view para cada views ou outra alguma coisa ?? qual é a maneira fácil de fazer isso?

por exemplo; Eu tenho 20 visualizações e 40 classe que mapeiam para todas as tabelas no sql server, Minhas vistas coletam as tabelas de dados diferentes (ou seja, objetos diferentes). Eu deveria criar mais 20 classes, exceto de 40, que representam a exibição?

OBJ

class BOboj {
        private int _PId;
        private string _Name;
        .......
        .......


}

DAL

BOboj_DAL {

        public bool Add(BOboj obj)
        {
            using (SqlConnection con = Connect.connect)
            {
                string sql = "insert into Persons (Id,Name,
                 .......
                 .......
}

BBL

BOboj_BLL {

        .......
        .......
        public bool Add(BOboj_DAL obj)
        {
            BOboj_DAL bb_dal = new BOboj_DAL();
            try
            {
                return bb_dal.Ekle(obj);

            }
            catch (Exception)
            {

                throw;
            }
            finally { bb_dal = null; }

        }

        .......
        .......
}

Camada de Preservação

  protected void Add(object sender, DirectEventArgs e)
        {
            BOboj_BLL bll_= new BOboj_BLL ();

            BOboj  obj_ = new BOboj 
            {
                Name = Name.Text,
                ..............
                ...............

            };
            bll_.Add(obj_ );
}

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion