Dúvidas.

Dec 10, 2013 at 12:07 PM
     Olá, parabéns pelo framework. Baixiei o Framework e achei bem interessante a proposta e velocidade.... Acho que vai se encaixar muito bem no que preciso. Gostaria de tirar algumas dúvidas se fosse possível.

     1 - Existe algum exemplo no estilo do NerdDinner?
     2 - Há alguma maneira do sistema fazer o preenchimento de dados para classes que não seja as entities? Não gostaria de trafegar "DTOs" com tantos atributos....
     3 - Gostaria de "esconder" toda esta parte do banco de dados atras de uma infraestrutura e acessa-las via repositório, já fez alguma implementação desta maneira?
     4 - Como é feia a paginação? tem algum método helper ou para isso ou teria que escrever uma query pra isso?
     5 - Onde posso encontrar mais exemplos das querys que recebem uma FUNC como parâmetro, tenho que passar uma query sql para estes métodos?

            Obrigado!
Coordinator
Dec 13, 2013 at 12:49 AM
Oi Jacob,

Fiz um simples projeto Web Form, pra mostrar como vc faz paginação usando o Speed.

Vc terá que baixar a última versão dos fontes

Lá tem tb um exemplo de uso de transaction.
Como vc pediu, coloquei uma connection a nível de página, só pra te mostrar como faz isso.

No global.asax é inicializado o Speed, que seta o tipo de banco e a ConnectionString (do web.config)
        protected void Application_Start(object sender, EventArgs e)
        {
            Sys.ProviderType = EnumDbProviderType.SqlServer;
            Sys.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        }
Neste projeto tem 2 controles que desenvolvi e que facilitam muito a paginação. Com poucas linhas de código vc tem uma tela de paginação e ordenação.
    public partial class Default : PageBase
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                string where = null; // aqui ou num textbox vc pode incluir um filtro. Nao é obrigatório ter filtro
                grid.SortDirection2 = SortDirection.Ascending;
                grid.SortExpression2 = "CustomerId";
                pager.PageSize = 20;
                pager.TotalItems = (int)BL_Customers.Count(Db, where);
                pager.MoveFirst();
            }
        }

        protected void pager_PageNumberChanged(object o, SiteTest.WebControls.DataPagerEventArgs e)
        {
            string sort = grid.SortSql;
            grid.DataSource = BL_Customers.SelectPage(Db, e.From, pager.PageSize, sort);
            grid.DataBind();

        }

        protected void grid_Sorting(object sender, GridViewSortEventArgs e)
        {
            pager.MoveFirst();
        }

    }

}
A paginação está implementada para o Sql Server. Vou fazer a nas próximas semanas pra o Oracle e os outros bancos
Coordinator
Dec 13, 2013 at 1:02 AM
Uma coisa importante.

Apesar do Speed gerar a Business Layer vc não é obrigado a usá-la, se desejar um outro padrão.
Eu a crio usando métodos estáticos pq a performance é melhor (~5%), se usa menos código, e facilita bastante o trabalho.

Todos os métodos da business layer possuem equivalentes na classe Database.
Assim, os métodos abaixo são equivalentes
            using (var db = Sys.NewDb())
            {
                var recs1 = BL_Customers.Select(db, "CustomerName like 'xxx'");
                var recs2 = db.Select<Customer>("CustomerName like 'xxx'");
            }
E nem a classe Sys é de uso obrigatório.
Eu a uso muito por possuir métodos de ajuda, mas, por exemplo, pra abrir uma base de dados, use o código abaixo:
            var db = new Database(EnumDbProviderType.SqlServer, "ConnectionString");
            db.Open();
Há vários modelos de arquiteturas. Muitos são extensos demais, com muitas camadas, etc.

Eu sou prático. Desenvolvo um software usando uma arquitetura que:
1. Faz grande uso de reutilização de código
2. Maior produtividade (o projeto fica prontos antes)
3. O custo de manutenção é baixo
Respeito quem usa outros tipos de arquitetura.
Eu prefiro desenvolver softwares que tenham baixo custo.

Se vc perguntar para o dono da empresa, que vai paga pelo software, quais das opções ele prefere:
  1. Usar o Design Pattern mais moderno que existe, que obedece X princípios de arquitetura, mas que vai demorar 10 meses e custar R$ 1.000.000,00
  2. Usar um padrão enxuto, mas que vai demorar 6 meses e custar R$ 500.000,00
Qual seria a resposta de quem iria pagar pelo projeto?
Dec 13, 2013 at 2:07 AM
Excelente, como disse por e-mail obrigado!!!! Estou me aprofundando no seu código!