Pergunta MVC3 + EF + Ajax

  • sexta-feira, 31 de agosto de 2012 14:36
     
     
    Olá,

    estou querendo montar um processo tipo carrinho de compras. Aonde vou ter o objeto "COMPRA" e o objeto "ITENS". Mas tenho dúvida como implementar isto...

    Qual o melhor jeito? Tipo, crio um model, do tipo COMPRA e depois adiciona a lista de "ITENS" e vou adicionado os dados?

    Como devo criar o objeto "COMPRA" e aonde? Como funciona isto?

    Quero usar Ajax para dar "insert" nos dados...E outra coisa que eu também tenho dúvida, como posso atualizar a página sem dar reload, dos dados adicionados na "COMPRA".

    Ou é melhor fazer tudo por JQuery e indo salvando os dados no banco de dados? Assim não existiria nenhum problema, com queda de conexão ou trocar de micro...

    Abs

    Marlon Tiedt
    www.sesmt.com.br




    • Editado Marlon Tiedt sexta-feira, 31 de agosto de 2012 14:56
    • Editado Marlon Tiedt sexta-feira, 31 de agosto de 2012 14:59
    • Editado Marlon Tiedt sexta-feira, 31 de agosto de 2012 16:50
    •  

Todas as Respostas

  • sexta-feira, 31 de agosto de 2012 18:55
    Moderador
     
      Contém Código

    Olá Marlon.

    Sua pergunta relaciona diferentes tecnologias: EF, Ajax e ASp.Net MVC.

    Nesta parte do fórum do MSDN vc encontrará melhores comentários sobre acesso a dados, pois aqueles que visitam este fórum gostam mais deste assunto. Recomendo que divida sua pergunta em duas partes, uma para este fórum e outra para o fórum de ASP.Net.

    Para resolver sua pergunta sobre o EF, acredito que utilizando EF Code First vc pode resolver isso de forma bem simples. O código abaixo faz isso pra ti.

       class Program
        {
            static void Main(string[] args)
            {
                InserirNovaCompraEProduto();
                RealizarConsultas();
            }
            static void RealizarConsultas()
            {
                using (Contexto contexto = new Contexto())
                {
                    var produtosNaBase = contexto.Produtos;
                    var comprasNaBase = contexto.Compras.Include(i => i.Items);
                    var itemsNaBase = contexto.ItemCompras.Include(c => c.Compra).Include(p => p.Produto);
                }
            }
            static void InserirNovaCompraEProduto()
            {
                Produto novoProduto = new Produto();
                novoProduto.Nome = "Produto de teste";
                using (Contexto contexto = new Contexto())
                {
                    contexto.Produtos.Add(novoProduto);
                    contexto.SaveChanges();
                }
                Compra novaCompra = new Compra();
                novaCompra.Data = DateTime.Now;
                using (Contexto contexto = new Contexto())
                {
                    contexto.Compras.Add(novaCompra);
                    contexto.SaveChanges();
                }
                ItemCompra novoItem = new ItemCompra();
                novoItem.Compra = novaCompra;
                novoItem.Produto = novoProduto;
                using (Contexto contexto = new Contexto())
                {
                    contexto.Entry(novoItem.Produto).State = System.Data.EntityState.Modified;
                    contexto.Entry(novoItem.Compra).State = System.Data.EntityState.Modified;
                    contexto.ItemCompras.Add(novoItem);
                    contexto.SaveChanges();
                }
            }
        }
        public class Contexto : DbContext
        {
            public DbSet<Compra> Compras { get; set; }
            public DbSet<Produto> Produtos { get; set; }
            public DbSet<ItemCompra> ItemCompras { get; set; }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Entity<Compra>()
                                .HasMany(i => i.Items)
                                .WithRequired(c => c.Compra);
                modelBuilder.Entity<ItemCompra>()
                                .HasRequired(p => p.Produto);
            }
        }
        public class Compra
        {
            public int Id { get; set; }
            public DateTime Data { get; set; }
            public List<ItemCompra> Items { get; set; }
        }
        public class Produto
        {
            public int Id { get; set; }
            public string Nome { get; set; }
        }
        public class ItemCompra
        {
            public int Id { get; set; }
            public Compra Compra { get; set; }
            public Produto Produto { get; set; }
            public int Quantidade { get; set; }
        }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

  • sexta-feira, 31 de agosto de 2012 19:00
     
     

    Boa Tarde amigo.

    Esse link tem um exemplo que particulamente achei basico mas muito bom .

    http://www.macoratti.net/aspn_ces.htm

  • sexta-feira, 31 de agosto de 2012 19:08
    Moderador
     
     

    Olá Valdir,

    Uma frase: Macoratti é o cara!

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil