R – Instalando o R Studio – Linux

Publicado: 30 de novembro de 2016 em R

RStudio é um ambiente de desenvolvimento integrado (IDE) para R. Ele inclui um console, editor com destaque de sintaxe que suporta execução de código direto, bem como ferramentas para plotting, história, depuração e gerenciamento de espaço de trabalho.

O RStudio está disponível em open source e edições comerciais e é executado no desktop (Windows, Mac e Linux) ou em um navegador conectado ao RStudio Server ou ao RStudio Server Pro (Debian / Ubuntu, RedHat / CentOS e SUSE Linux).

R-Studio: https://www.rstudio.com/products/RStudio/

Instalando o R Studio

1 – Após instalar o R e baixar o R studio extraia o arquivo baixado em uma pasta:

Bin

Bin

2 – Na pasta Bin execute o arquivo chamado rstudio, após a IDE abrir, crie um novo arquivo de script R, copie o código abaixo, selecione e clique em Run:

RStudio - Gráfico

RStudio – Gráfico

Você deve obter um grafico de barras degrade das cores amarelas e vermelhas. Não se precupe em entender o código R por enquanto, vamos aprender isso detalhamente ao longo dos posts sobre o R

R

barras <- c(1:10)

corDegrade <- colorRampPalette(c("yellow","red"))
corDegrade(10)

barplot(barras, col=corDegrade(10))

 

R – Instalando o R – Linux – Ubuntu

Publicado: 24 de novembro de 2016 em Linux, R

R é uma linguagem e também um ambiente de desenvolvimento integrado para cálculos estatísticos e gráficos. A linguagem de scripts R disponibiliza uma ampla variedade de técnicas estatísticas e gráficas, incluindo modelação linear e não linear, testes estatísticos clássicos, análise de séries temporais (time-series analysis), classificação, agrupamento e outras. A R é facilmente extensível através de funções e extensões, e a comunidade R é reconhecida pelos seus contributos ativos em termos de pacotes. Existem diferenças importantes, mas muito código escrito para S corre inalterado. Muitas das funções padrão do R são escritas no próprio R, o que torna fácil para os usuários seguir as escolhas algorítmicas feitas. Para tarefas computacionais intensivas, os códigos C, C++, e Fortran podem ser ligados e chamados durante a execução. Usuários experientes podem escrever código C ou Java para manipular diretamente objetos R.

R Project: https://www.r-project.org/

mosaic1
 R e SQL Databases

R junto ao SQL também conhecido como R In-Database, adiciona componentes e serviços com opções analiticas, tornando a linguagem de programação e ambiente de código aberto R pronta para a empresa de grande porte. Projetado para problemas envolvendo grandes volumes de dados, SQL e R integra R com os bancos de dados principais do mercado, como Oracle, MSSQL entre outros, podendo executar comandos R e scripts para análises estatísticas e gráficos em dados armazenados em banco de dados.

R Services In-Database é um recurso que oferece suporte à ciência de dados em escala empresarial. R é a linguagem de programação mais popular para análises avançadas e oferece um conjunto de pacotes incrivelmente rico e uma comunidade de desenvolvedores vibrante e em rápido crescimento. R In-Database ajuda você a abraçar a altamente popular linguagem de código aberto em sua empresa.

Oracle: Oracle R Enterprise

MSSQL: SQL Server R Services

IBM DB2: DashDB / R

SAP Hana: SAP Hanna R Integration

 

Instalando o R – Ubuntu

1 – Para instalar use os comandos do script abaixo:

r1-keys

R – Keys

2 – Após a instalação digite R no terminal para abrir o console:

Console

Console

R

Use os scripts abaixo para instalar o R:

sudo sh -c 'echo "deb http://cran.rstudio.com/bin/linux/ubuntu trusty/" >> /etc/apt/sources.list'

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key E084DAB9

sudo apt-get update

sudo apt-get -y install r-base

R

 

 

Oracle – Qual a diferença entre SQL e o PL/SQL?

Publicado: 3 de novembro de 2016 em Sql

Uma das dúvidas mais comuns entre estudantes e profissionais de TI que não trabalham diretamente com Banco de Dados é a diferença entre essas duas linguagens. Vou te confessar que é um pouco complicado e eu entendo isso, afinal até o nome delas é parecido e isso pode confundir e muito os profissionais. 

 

O que é o SQL?

O SQL é uma linguagem de programação que foi criada na década de 70 pela IBM para os Banco de Dados Relacionais da empresa, com o objetivo de implementar as regras de relacionamento de um banco de dados.

Mais tarde ela entrou para o padrão ANSI e todas as empresas que desenvolvem SGDBs adotaram ele como padrão de banco de dados relacionais.

logoazuresql

O que é o PL/SQL?

O PL/SQL é uma linguagem de programação procedural que foi implantada pela Oracle Database no ano de 1991, Clique aqui para ver a história do PL/SQL (http://aprendaplsql.com/2013/08/conheca-historia-da-linguagem-plsql/) e ela surgiu com a necessidade da Oracle de ter uma linguagem interna, já que o SQL tem a função apenas o objetivo de pesquisas, recuperar e formatar dados de forma simples. 

Qual a grande vantagem de usar o PL/SQL?

O PL/SQL é uma linguagem de programação que é compilada dentro do Banco de Dados e com isso temos uma economia gigantesca de tempo e o poder da utilização do Hardware do Database para processar as informações, esta é uma grande vantagem tendo em vista que o Banco de Dados possuí recursos muito poderosos.

Vale lembrar que esses recursos devem ser usados com moderação, como eu costumo defender para os meus alunos o Banco de Dados é o coração da empresa e se ele ficar fora do ar, simplesmente todos os sistemas ficam fora do ar. Então tome muito cuidado com as suas implementações.

É possível fazer um sistema apenas com o SQL?

A resposta é sim, e eu como especialista nas duas linguagens te digo que qualquer programador deve saber SQL, afinal você vai precisar sempre fazer a interface com um Banco de Dados, inclusive criei um artigo com os 10 motivos pelos quais todo programador deve saber SQL(http://aprendaplsql.com/2016/03/10-motivos-pelos-quais-todo-programador-deve-saber-sql/).

Um bom desenvolvedor PL/SQL deve dominar o SQL, isso porque apesar do PL/SQL ser muito rápido e resolver os seus problemas quando um código simples não funciona, o SQL sempre tem que estar muito bem feito, senão você vai ter problemas de performance.

O que é SQL e o que é PL/SQL?

Segue abaixo o que o SQL suporta

Elementos da linguagem: Clausulas, Expressões, Consultas, Statments (Demonstrações), Condições de uma consulta;

Operadores: =, >, =, <=, BETWEEN, LIKE, IN, NOT IN, IS, IS NOT, AS, etc;

Consultas (Queries): que inclui SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, etc;

Tipos de Dados: NUMBER,  CHAR, BIT, DATE e TIME

DDLs(CREATE, REPLACE), DMLs(INSERT, DELETE, UPDATE) e DCLs (COMMIT ROLLBACK)

Já o PL/SQL suporta os seguintes objetos/comandos.

Objetos: Packages, Procedures, Functions, Triggers, Types

Variáveis: NUMBER, PLS_INTEGER, BOOLEAN, BINARY_INTEGER, VARCHAR2, RAW, etc

Estruturas de Decisão e Repetição: IF, ELSE, THEN, LOOP, WHILE, CASE

Cursores Explícitos e Implícitos.

Conclusão

Com as informações passadas acredito que você agora consiga distinguir o SQL e o PL/SQL mas o mais importante deste artigo é que você entenda que é impossível saber um sem saber o outro e que essas linguagens são altamente poderosas e que podem fazer total diferença no seu dia-a-dia de programador.

 

Autor:  William Miranda

Site: aprendaplsql.com

Flask é um pequeno framework web escrito em Python e baseado na biblioteca WSGI Werkzeug e na biblioteca Jinja2. Flask está disponível sob os termos da Licença BSD.

Flask tem a flexibilidade da linguagem de programação Python e provê um modelo simples para desenvolvimento web. Uma vez importando no Python, Flask pode ser usado para economizar tempo construindo aplicações web. Um exemplo de aplicação desenvolvida com Flask é a página da comunidade de desenvolvedores do framework.

É chamado de microframework porque mantem um núcleo simples mas estendível. Não há uma camada de abstração do banco de dados, validação de formulários, ou qualquer outro componente onde bibliotecas de terceiros existem para prover a funcionalidade. Assim, Flask suporta extensões capazes de adicionar tais funcionalidades na aplicação final. Há uma vasta coleção de bibliotecas para resolver essas questões em Python, isso simplifica o framework e torna sua curva de aprendizado mais suave.

Flaskhttp://flask.pocoo.org/

Instalando e configurando o Flask

Primeiramente você precisa ter uma instalação do Python em sua maquina, e no caso do sistema operacional Windows, que esta instalação inclua o caminho do ambiente Python na variável de ambiente Path:

1 – Por questões de preferências, utilizamos uma instalação do Python 2.7.x.

Variável de ambiente - Windows

Variável de ambiente – Windows

2 – Neste primeiro exemplo, vamos instalar, configurar e criar um servidor Flask e exibir uma pagina web utilizando o próprio exemplo do framework Flask. Para isto abra a linha de comando para criar um ambiente virtual:

Ambiente - Virtual

Ambiente – Virtual


pip install virtualenv

cd\

mkdir DesenvolvimentoAberto\FlaskPrj

cd DesenvolvimentoAberto\FlaskPrj

virtualenv flask

3 – Apos criar o ambiente virtual e o diretório para o nosso projeto, vamos instalar o Flask:

Instalando o Flask

Instalando o Flask


C:\DesenvolvimentoAberto\FlaskPrj\flask\Scripts\pip install flask

4 – Com o Flask instalado, você pode abrir sua IDE ou editor Python preferido e utilizar o exemplo Hello World do site do Flask. Salve o arquivo como o nome reservado de __init__.py em uma pasta chamada App que você irá criar:

__init.py__

__init.py__

5 – No diretório de Scripts, ative o Flask e chame sua aplicação Python:

Activate Flask

Activate Flask

C:\DesenvolvimentoAberto\FlaskPrj\flask\Scripts\activate

cd C:\DesenvolvimentoAberto\FlaskPrj\App
C:\DesenvolvimentoAberto\FlaskPrj\App Python __init__.py

6 –  Com o servidor rodando abra o navegador e digite a URL padrão: http://127.0.0.1:5000/

Website - Flask - Navegador

Website – Flask – Navegador

E Pronto! Você já possui uma servidor web Flask e uma aplicação Python rodando.

Exemplo:

Neste exemplo instalamos, configuramos e criamos uma aplicação web inicial Python com o Flask.

Python

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

O Apache Maven é uma ferramenta de gerenciamento de projetos de software e compreensão de pacotes. Baseado no conceito de um modelo de objeto do projeto (POM), O Maven pode gerir um projeto de construção (compilação), elaboração de relatórios e documentação de uma única central de informações.

Um Project Object Model, fornece todas as configurações para um único projeto. A configuração geral cobre o nome do projeto, seu proprietário e suas dependências de outros projetos. Também pode configurar fases individuais do processo de construção, que são implementados como plug-ins. Projetos maiores poderiam ser divididos em vários módulos, ou subprojetos, cada um com seu próprio POM. Cada um pode então escrever um POM raiz através do qual pode-se compilar todos os módulos com um único comando.

O Maven utiliza templates chamados de Archetypes ou arquétipos que são um conjunto de ferramentas de modelagem do projeto Maven. Um arquétipo é definido como um padrão ou modelo inicial a partir da qual todos os outros objetos do mesmo tipo são feitos contemplando as melhores praticas para cada modelo. Os Arquétipos ajudam autores a criar modelos de projeto Maven para os usuários, e oferece aos usuários os meios para gerar versões parametrizadas desses modelos de projeto.

Versões mais modernas do Eclipse já contemplam uma instalação para criar projetos Maven, mas não habilita comandos no ambiente de console do Linux, siga os passos abaixo para instalar o Maven para ser utilizado pela linha de comando no console, isto é muito versátil quando você precisa instalar arquivos jar no repositório do Maven.

Maven: https://maven.apache.org/

Instalando o Apache Maven no Linux openSuse

1 – Abra o console do Linux e digite as seguintes linhas de comando:


java -version

cd Downloads

tar xvzf apache-maven*.tar.gz -C /tmp/

sudo su

rm /home/[myUser]/Downloads/apache-maven*bin.tar.gz

chown -R root:root /tmp/apache-maven*

mv /tmp/apache-maven* /opt/

exit

kdesu kwrite $HOME/.bashrc

//*** Adicione a linha abaixo dentro do arquivo no kwrite e salve (vide imagem)
//export PATH=$PATH:/opt/apache-maven-3.3.9/bin/
//****
source $HOME/.bashrc

mvn -version

Os comando acima tem a seguinte ação

  • Verifica se você possui o Java (Obrigatório).
  • Abre a pasta de download do usuário, descompacta o arquivo em um diretório temporário.
  • Eleva direitos de super usuário, atribui propriedade ao usuário, exclui o arquivo baixado e move a instalação para o diretório correto.
  • Abre o arquivo de configuração do Linux usando a GUI para que você o altere e aplique as alterações no sistema.
  • Testa o Maven instalado.
Instalar Maven

Instalar Maven

Você deve adaptar os comandos de acordo com a realidade do arquivo binário do Maven no qual baixou e o usuário do seu sistema operacional.

2 – Atente-se para a alteração no arquivo bashrc e coloque a linha para inserir o caminho do Maven a variável de ambiente $PATH. Apos completar todos os comandos você deve obter a versão do Maven  indicando que a instalação foi um sucesso:

Maven -version

Maven -version

O Apache Maven foi instalado com sucesso no seu openSuse e você já pode utilizar o Maven através da linha de comando no console.

O Apache Tomcat  é um servidor web desenvolvido pela Apache Software Foundation (ASF). O Tomcat implementa o Java Servlet e JavaServer Pages (JSP) especificados pela Oracle, e fornece um ambiente de servidor puro JavaHTTP web para o código Java.

TomCat 8: http://tomcat.apache.org/

Instalando o Apache Tomcat

1 – Após o download do arquivo você precisa instalar o JDK 8, caso ainda não tenha instalado basta dar duplo clique no arquivo jdk-8u65-linux-x64.rpm para efetuar a instalação.

Linux JDK 8 RPM: Download

Para Instalar o tomcat8:

sudo tar -zxvf apache-tomcat-8.0.28.tar.gz -C /usr/local/

2- Caso não tenha nenhum servidor rodando na porta 8080, pule este passo. Caso tenha um outro servidor web em sua maquina ou pretenda trabalhar com o Oracle Database (Oracle usa APEX na 8080) mude as todas portas do arquivo de configuração para que iniciem o valor 9, por exemplo: 9080 e assim por diante, utilize a figura abaixo para referencia:

kdesu kwrite /usr/local/apache-tomcat-8.0.28/conf/server.xml

 

Server.xml

Server.xml

3 – Você precisa definir um usuário e senha para que possa acessar as configurações do Tomcat, digite a seguinte linha de comando para alterar o arquivo de usuários:

kdesu kwrite /usr/local/apache-tomcat-8.0.28/conf/tomcat-users.xml
Users.xml

Users.xml

Inclua os dados abaixo no arquivo xml:

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

4 – Digite o comando a seguir para iniciar o servidor Tomcat:

sudo /usr/local/apache-tomcat-8.0.28/bin/startup.sh
Iniciando o Tomcat

Iniciando o Tomcat

5 – Abra o seu navegador e digite o seguinte endereço, “localhost:9080“:

Localhost:9080 - Tomcat

Localhost:9080 – Tomcat

6 – Para finalizar atribua o diretório do Tomcat ao seu usuário pois vai necessitar assim que utilizar o Eclipse ou alguma outra IDE de sua preferencia para que possa acessar os arquivos do Tomcat e iniciar uma nova instancia de sua IDE. Atente-se que no comando abaixo DevAberto é o usuário logado no Linux, você também deve ficar atento as versões do arquivo que você está baixando e adaptar as linhas de comandos para que você não obtenha erros:

sudo chown -R DevAberto /usr/local/apache-tomcat-8.0.28/

Tudo pronto e você já está apto a criar suas aplicações Java para Web, utilize nossos exemplos para aprender mais sobre Java EE.

Desenvolver aplicativos que possam rodar em varias plataformas é uma vantagem nos dia de hoje. Até as empresas mais tradicionais como a Microsoft há tempos resolveu quebrar de vez a barreira de sua plataforma e investir em portabilidade e interoperabilidade. Seja adquirindo e disponibilizando aplicativos para outras plataformas como o Skype, ou mesmo desenvolvendo suas próprias ferramentas, como o Visual Studio Code ou também firmando parcerias com outros sistemas operacionais como já vem de algum tempo a aliança entre a Microsoft e a Novell proprietária da edição Linux Suse Enterprise.
Nos desenvolvedores, estudantes, entusiastas e profissionais de tecnologia amantes da programação podemos também participar desta parceria desenvolvendo aplicativos profissionais para o mercado corporativo no qual podemos tirar vantagem da interoperabilidade entre os sistemas operacionais Linux e Windows. Para começar esta empreitada precisamos do básico, ou seja instalar os dois sistemas operacionais em um computador, este recurso nada mas é do que o conhecido Dual Boot, que na verdade não precisa ser exatamente “Dual” podemos ter vários sistemas operacionais instalados em um computador e usar o que desejarmos, escolhendo na hora do boot qual sistema operacional vamos carregar e trabalhar.

 

Criando um Dual Boot Windows 10 e openSuse à partir do Windows com um Pen Drive

 

1 – Vamos criar um dual boot entre o Windows 10 e Linux openSuse de um modo simples e fácil. No Windows 10,  vamos primeiro baixar uma cópia no formato “.iso” do sistema operacional openSuse Linux:
OpenSuseopensuse.org
Para criar um pen drive para a instalação do openSuse baixe o seguinte programa:
Para criar o pen drive de instalação siga os quatro simples passos do programa que são, selecionar o pen drive, escolher a opção “Write image to USB“, selecionar o arquivo iso do openSuse e clicar no botão Write para começar a criação do pen drive de boot Linux.
ImageUSB

ImageUSB

2 – Na nova pesquisa do Windows 10 ao lado do botão iniciar, escreva a palavra “disco” e escolha a opção criar e formatar partições do disco rígido:
Gerenciador de Disco

Gerenciador de Disco

3 – Selecione a partição onde o Windows 10 está instalado, geralmente o volume C: e com o botão direito do mouse escolha diminuir volume:
Partições de disco

Partições de disco

4 – Diminua a quantidade de Gigabytes desejada, neste exemplo vou diminuir 1 GB:

Diminuir partição

Diminuir partição

5 – Você vai visualizar o espaço não alocado em seu disco, matenha assim, não formate pois o Linux irá reconhecer automaticamente este espaço e assim teremos uma instalação simples:

Não Alocado

Não Alocado

6 – Reinicie o sistema operacional e dê o boot pelo pen drive. Antes tenha certeza que você habilitou o boot USB e o colocou como primeiro boot na configuração da sua BIOS. Use a tecla para escolher o Boot no meu caso F12 mas isso vai depender da sua placa mãe:

Boot Pen Drive

Boot Pen Drive

7 – Instale o openSuse normalmente com todas as opções recomendadas use o particionamento sugerido a não ser que você seja um usuário avançado e queira escolher suas partições manualmente.

Caso tenha duvidas de como instalar o openSuse use nosso post no link abaixo. Atente-se para a opção de disco onde o Linux irá dividir seu espaço não particionado em 3 partições Linux, ext4, swap e /home, além disso ira criar o boot/Efi na partição /sda1 que é nada mais que o C: do Windows:

Instalando o openSuse (pule a maquina virtual neste post)

Disco e partições Linux

Disco e partições Linux

Você também pode escolher entre as duas interfaces gráficas padrão na instalação do openSuse, a Gnome e a KDE, sendo que a KDE se assemelha mais ao estilo do Windows com o botão iniciar e tudo mais. Você também pode escolher uma outra interface gráfica se  desejar, segue abaixo uma previa das duas interfaces mais comuns quando o openSuse estiver instalado:

KDE

KDE

Gnome

Gnome

8 – Após a instalação do openSuse o sistema irá reiniciar, você já poderá ver a tela de escolha de boot do Grub do Linux, escolha openSuse mais uma vez para que o sistema termine a instalação. Assim que terminar a instalação do openSuse você já pode reiniciar e alternar os sistemas operacionais como desejar:

Grub - Dual Boot

Grub – Dual Boot

Você já pode começar a utilizar os sistemas operacionais Windows 10 e Linux Suse e tirar proveito da interoperabilidade disponível para desenvolver seus aplicativos corporativos.

Quando utilizamos um mapeamento objeto relacional para usar duas tabelas do banco de dados que estão ligadas entre si através de um identificador comum nos deparamos com algumas diferenças de conceitos do tradicional método de usar o banco de dados relacional no qual estamos acostumados. O que podemos fazer simplesmente com a linguagem SQL como declarar uma instrução Join se torna um pouco mais complicado no mundo ORM, está diferença é chamada de impedância objeto-relacional.

Existem vários métodos para que se possa lidar com esta diferença de conceitos no qual os bancos de dados ainda não estão preparados para lidar, pois os maiores banco de dados do mercado ainda são os relacionais. Podemos utilizar um método chamado Bind que apesar de simples não é muito usual devido a sua sintaxe ser um pouco diferente do padrão do qual estamos acostumado no C#.

No seu uso mais simples, o Bind nos permite utilizar entre outros um prefixo para trazer o identificador do modelo de uma visão para que possamos utiliza-lo em outra visão para filtra dados.

BindAttribute:
https://msdn.microsoft.com/en-us/library/system.web.mvc.bindattribute(v=vs.118).aspx

Deste modo podemos facilmente escrever aplicações que usam dados relacionais e manipula-los através do framework MVC. Você pode manualmente criar modelos e identificadores entre eles e liga-los utilizando bind, apesar de não muito usual está estratégia permite mais controle sobre o SQL que seu framework ORM irá utilizar para manipulação do seu banco de dados.

Relacionado dados entre modelos

1 – Crie uma aplicação C# – MVC Razor, utilize o exemplo anterior para criar os modelos, visões e Scaffold para que você obtenha um CRUD totalmente funcional sem que tenha que escrever linhas de código.

CRUD ASP.NET MVC – Entity Framework

2 – Altere a visão de apresentação chama Index do controlador de cadastro e substitua o link detalhes pelo link horários e alimente os dados que desejar.

Cadastro - Cursos

Cadastro – Cursos

3 – Crie um novo Scaffold para o modelo grade e alimente os dados utilizando os identificadores do cadastro anterior, visto que neste momento você ainda não pode vê-los, pois não são exibidos na View. Os identificadores são sequenciais, você pode utilizar a instrução Select no SQL Studio para visualiza-los ou pode exibi-los na sua View de cadastro adicionando mais um campo para ser exibido se desejar.

Horários - Grade

Horários – Grade

4 – Altere o controlador da grade de horários como no código abaixo:

Grade - Bind

Grade – Bind

Exemplo:

Neste exemplo criamos dois modelos e utilizamos um Scaffold de escrita e leitura para criar toda funcionalidade para nossa aplicação. Relacionamos os modelos manualmente através do atributo Bind.

Nesta aplicação o item JAVA EE possui o identificador 6, no qual somente o item relacionado será mostrado caso tenha um horário na tabela grade no banco de dados.

C#
Cadastro
Index.cshtml

@model IEnumerable<WebApplication1.Models.CursosModelo>

@{
    ViewBag.Title = "Index";
}


<h2>Index</h2>




    @Html.ActionLink("Create New", "Create")



<table class="table">

<tr>

<th>
            @Html.DisplayNameFor(model => model.Curso)
        </th>


<th>
            @Html.DisplayNameFor(model => model.Linguagem)
        </th>


<th>
            @Html.DisplayNameFor(model => model.Descr)
        </th>


<th></th>

    </tr>


@foreach (var item in Model) {

<tr>

<td>
            @Html.DisplayFor(modelItem => item.Curso)
        </td>


<td>
            @Html.DisplayFor(modelItem => item.Linguagem)
        </td>


<td>
            @Html.DisplayFor(modelItem => item.Descr)
        </td>


<td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |

            
            @*Altere os detalhes para que você chamar a visão de horarios*@ 
            @Html.ActionLink("Horarios", "Index", "GradeModeloes", new { id=item.Id }, null) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>

    </tr>

}

</table>


Controlador
GradeModeloesController

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class GradeModeloesController : Controller
    {
        private MinhaAppMeuDB db = new MinhaAppMeuDB();

        

        // GET: GradeModeloes
        // Use o Bind para relacionar os dados exibidos entre as visões
        public ActionResult Index([Bind (Prefix ="id")]int CursosId)
        {
            var MeuCurso = from m in db.Grades
                           where m.IdCursoModelo.Equals(CursosId)
                           select m;
            
            if (MeuCurso != null)
            {
                return View(MeuCurso);
            }

            return HttpNotFound();
        }

        // GET: GradeModeloes/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            GradeModelo gradeModelo = db.Grades.Find(id);
            if (gradeModelo == null)
            {
                return HttpNotFound();
            }
            return View(gradeModelo);
        }

        // GET: GradeModeloes/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: GradeModeloes/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Id,Dia,hora,IdCursoModelo")] GradeModelo gradeModelo)
        {
            if (ModelState.IsValid)
            {
                db.Grades.Add(gradeModelo);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(gradeModelo);
        }

        // GET: GradeModeloes/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            GradeModelo gradeModelo = db.Grades.Find(id);
            if (gradeModelo == null)
            {
                return HttpNotFound();
            }
            return View(gradeModelo);
        }

        // POST: GradeModeloes/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "Id,Dia,hora,IdCursoModelo")] GradeModelo gradeModelo)
        {
            if (ModelState.IsValid)
            {
                db.Entry(gradeModelo).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(gradeModelo);
        }

        // GET: GradeModeloes/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            GradeModelo gradeModelo = db.Grades.Find(id);
            if (gradeModelo == null)
            {
                return HttpNotFound();
            }
            return View(gradeModelo);
        }

        // POST: GradeModeloes/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            GradeModelo gradeModelo = db.Grades.Find(id);
            db.Grades.Remove(gradeModelo);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}

 

 

CRUD acrónimo de Create, Read, Update e Delete, utiliza as quatro operações básicas  para criação, consulta, atualização e exclusão de dados. Outros acrónimos podem ser usados para definir as mesmas operações:

  •  ABCD: Add, Browse, Change e Delete
  • BREAD: Browse, Read, Edit, Add e Delete
  • VADE(R): View, Add, Delete, Edit (e Restore, para sistemas com processos transacionais)
  • VEIA: Visualizar, Excluir, Inserir, Alterar

A abreviação CRUD também pode ser mapeada para o padrão ISO/SQL:

  • Create INSERT
  • Read (Retrieve) SELECT
  • Update UPDATE
  • Delete (Destroy) DELETE

As operações CRUD também são relevantes em interfaces para utilizadores de vários níveis. Por exemplo, num programa de Catálogo de Endereços, uma entrada de um contato individual pode ser considerada a unidade básica de persistência. As operações mínimas para este tipo de programa são:

  • Create Criar ou adicionar novas entradas
  • Read (Retrieve) Ler, recuperar ou ver entradas existentes
  • Update Atualizar ou editar entradas existentes
  • Delete (Destroy) Remover entradas existentes

As operações CRUD são facilmente programadas em aplicações que utilizam o padrão MVC, pois estes possuem o recurso de Scaffold que como já vimos em posts anteriores, criam todo o código necessário para estas operações.

Scaffolding é uma técnica apoiada por alguns frameworks MVC, nos quais o programador pode especificar a forma como o banco de dados de aplicativo pode ser usado. O compilador ou estrutura usa essa especificação, em conjunto com modelos de código pré-definido, para gerar o código final que o aplicativo podem usar para criar, ler, atualizar e excluir entradas de banco de dados, tratar eficazmente os modelos como um “Scaffolding” sobre o qual construir uma aplicação mais poderosa.

Criando CRUD em uma aplicação ASP NET MVC – Razor

1 – Crie uma aplicação web padrão MVC ou utilize o exemplo anterior que já possui todas as classes e modelos para realizarmos as operações CRUD. Na pagina de layout de sua aplicação insira um novo link para o controlador de cadastros:

MVC - _Layout.cshtml

MVC – _Layout.cshtml

2 – Crie um novo controlador chamado cadastro, nome no qual você utilizou no link do passo anterior. Escolha o tipo de Scaffold como Controller with Views using entity framework:

MVC - Controlador

MVC – Controlador

3 – Nas configurações do controlador, escolha seu modelo de dados, sua classe de contexto de dados e o nome do seu controlador:

MVC - Dados do Controlador

MVC – Dados do Controlador

4 – Pronto! Todo código será gerado automaticamente criando todas as funções CRUD que você precisa para alimentar os dados nesta tabela. Você tem uma aplicação com um cadastro totalmente funcional. Como já tínhamos dados na tabela devido ao exemplo anterior, recebemos a função READ como na figura abaixo:

MVC - READ

MVC – READ

5 – Clique em Create New para criar um novo registro em sua aplicação:

MVC - CREATE

MVC – CREATE

6 – Você pode editar os dados criados clicando em Edit no registro desejado:

MVC - UPDATE

MVC – UPDATE

7 – Você pode excluir o registro desejado usando a opção Delete:

MVC - DELETE

MVC – DELETE

Exemplo:

Neste exemplo usamos um contexto de dados e um modelo para criar as ações básicas de uma aplicação que utiliza banco de dados e nos permite criar, ler, alterar e excluir registros de uma tabela.

  • Todo o código gerado automaticamente pelo Scaffold não será exibido abaixo.

C#

Modelos:

Db Context

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class MinhaAppMeuDB : DbContext
    {
        // Define string de conexão  de sua aplicação
        public MinhaAppMeuDB() : base("name=DefaultConnection")
        { }

       public DbSet<CursosModelo> Cursos { get; set; }
       public DbSet<GradeModelo>  Grades { get; set; }

    }
}

Modelo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class CursosModelo
    {
        // Propriedades
        public int Id { get; set; }
        public string Curso { get; set; }
        public string Linguagem { get; set; }
        public string Descr { get; set; }

        // Aponta para o Grade
        public ICollection<GradeModelo> Cursos { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class GradeModelo
    {
        // Propriedades
        public int Id { get; set; }
        public string Dia { get; set; }
        public string hora { get; set; }

        // Cria relacionamento
        public int IdCursoModelo { get; set; }
    }
}

O Language Integrated Query (LINQ) é um componente do Microsoft .NET que adiciona funcionalidades de consulta em algumas linguagens de programação .NET. O LINQ corresponde a uma sintaxe unificada, inicialmente incorporada às linguagens C# e Visual Basic, para consultas em fontes de dados variadas. A sintaxe de consulta da LINQ foi inspirada na Structured Query Language (SQL), que é uma linguagem padrão para comunicação com bancos de dados relacionais. Assim como na linguagem SQL, as expressões de consulta LINQ permitem a construção de instruções variadas para extração de informações.  Ele define um conjunto de métodos chamados operadores de consulta, expressões lambda e tipos anônimos.

O LINQ é um conjunto de recursos introduzidos no Visual Studio 2008 que amplia os poderosos recursos de consulta para a sintaxe da linguagem C# e Visual Basic. O LINQ proporciona padrões intuitivos para o desenvolvimento queries para consulta e atualização de dados além de poder ser extendida para dar suporte a qualquer tipo de banco de dados. O Visual Studio inclui assemblies provedores de LINQ que permitem o uso do LINQ com coleções do .NET Framework, bancos de dados do SQL Server, conjuntos de dados ADO.NET e documentos XML.

LINQ: https://msdn.microsoft.com/pt-br/library/bb397897.aspx

101 Exemplos LINQ: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

Usando o LINQ

1 – Você pode criar uma aplicação web MVC usando o template padrão, criar um modelo de dados Code First e alimenta-lo com alguns dados no banco de dados MSSQL ou usar o exemplo anterior clicando aqui. Você deve obter uma página web com uma visão que exibe os seguintes dados:

MVC - Aplicação

MVC – Aplicação

2 – Modifique o controlador e a visão de acordo com os códigos abaixo para criar uma pesquisa e uma busca para sua visão:

LINQ - Seleção e Busca

LINQ – Seleção e Busca

Exemplo:

Neste exemplo utilizamos a aplicação criada anteriormente e utilizamos a linguagem LINQ para exibir os dados exibidos na visão e também para criar uma pesquisa que busca os caracteres iniciais do campo chamado cursos.

C#

Controlador

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        // Cria instancia do banco de dados
        MinhaAppMeuDB DB = new MinhaAppMeuDB();

        public ActionResult Index(string busca = null)
        {
            // Usando uma sintaxe simples do LINQ
            // Seleciona todos as propriedades dos cursos
            // Ordena pela propriedade curso
            // e pesquisa por caracteres iniciais do campo curso

            var modelo = from r in DB.Cursos
                         where busca == null || r.Curso.StartsWith(busca)
                         orderby r.Curso
                         select r;
                
            return View(modelo);
        }

        // Cria método override 
        protected override void Dispose(bool disposing)
        {
            // Limpa os recursos

            if (DB != null)
            {
                DB.Dispose();
            }
            base.Dispose(disposing);
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            
            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your application description page.";
            
            return View();
        }
    }
}

Visão

@model IEnumerable<WebApplication1.Models.CursosModelo>

@{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>Desenvolvimento Aberto - ASP.NET</h1>
    <p class="lead">ASP.NET - MVC - Entity Framework - HTML, CSS and JavaScript.</p>    
</div>
<form>
    <input type="search" name="busca" />
    <input type="submit" name="Buscar por nome" />
</form>
<br />
<table style="width:700px">
    <tr>
        <th>Cursos</th>
        <th>Linguagem</th>
        <th>Descrição</th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Curso</td>
            <td>@item.Linguagem</td>
            <td>@item.Descr</td>
        </tr>
            
    }
</table>