Bom dia a todos.
Segue o exemplo implementado da aula de número 07 – Acesso a Dados utilizando SqlClient. Logo estarei disponibilizando o mesmo exemplo utilizando Entity Framework 6.0.
Segue descrição:
Projeto Veiculos DB
Está solução está dividida em 6 projetos, sendo eles:
1- FFB.Modulo7.Projeto: Projeto do tipo Web Application responsável por exibir ao usuário a interface Web com os formulários de consulta, adição, edição e remoção de dados (CRUD)
2- FFB.Modulo7.Entidades: Projeto do tipo Class Library que contém as Entidades (classes de domínio) da nossa solução. As entidades seguem a metodologia POCO (Plain Old CLR Objects) permitindo assim o uso das entidades através de uma framework de ORM (Object Relation-Mapping ou Mapeamento de Objeto Relacional, por exemplo Entity Framework ou NHibernate).
3- FFB.Modulo7.DAO: Projeto do tipo Class Library que contém apenas a interface IDAO (Interface com os métodos básicos a serem implementados por todas as classes DAO). Este projeto está a parte para permitir a implementação de outra camada DAO utilizando outras tecnologias, mantendo o baixo acoplamento entre a camada Controle e a de acesso a dados e com isto permitir a troca rápida e até em tempo de execução da camada de persistência.
4- FFB.Modulo7.ADONET.DAO: Projeto do tipo Class Library que contém a implementação de persistência utilizando as classes de acesso a dados do ADO.NET (SqlClient).
5- FFB.Modulo7.ADONET.DAO.Teste: Projeto do tipo Unit Test que realiza os testes unitários para a camada de acesso a dados.
6- FFB.Modulo7.Controle: Projeto do tipo Class Library que contém as classes de controle que realizam a chamada as camadas DAO.
Segue o diagrama da estrutura básica de dependências do Projeto
Configuração:
1- Baixar e instalar o SQL Server 2008 Management Studio (http://www.microsoft.com/en-us/download/details.aspx?id=7593)
2- Após a instalação do Management Studio, deve-se verificar se a máquina contém alguma instância do SQL Server, para isto, na tela inicial da aplicação, aonde se pede o nome do Servidor, clique em BROWSE FOR MORE, expanda DATABASE ENGINE para ver o nome da instância instalada. Se nenhum aparecer, proceder com a instalação abaixo:
3- Baixar e instalar o SQL Server 2008, 2012 ou 2014 Express, Developer ou Professional. Por padrão o Express é instalado junto ao Visual Studio. Segue o link ensinando como verificar qual versão você já tem instalado do SQL na sua máquina: http://support.microsoft.com/kb/321185/pt-br
4- Executar o script abaixo para criar a base de dados
USE [master] GO /****** Object: Database [VeiculosDB] Script Date: 06/22/2014 11:07:44 ******/ CREATE DATABASE [VeiculosDB] GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [VeiculosDB].[dbo].[sp_fulltext_database] @action = 'enable' end GO ALTER DATABASE [VeiculosDB] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [VeiculosDB] SET ANSI_NULLS OFF GO ALTER DATABASE [VeiculosDB] SET ANSI_PADDING OFF GO ALTER DATABASE [VeiculosDB] SET ANSI_WARNINGS OFF GO ALTER DATABASE [VeiculosDB] SET ARITHABORT OFF GO ALTER DATABASE [VeiculosDB] SET AUTO_CLOSE OFF GO ALTER DATABASE [VeiculosDB] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [VeiculosDB] SET AUTO_SHRINK OFF GO ALTER DATABASE [VeiculosDB] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [VeiculosDB] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [VeiculosDB] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [VeiculosDB] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [VeiculosDB] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [VeiculosDB] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [VeiculosDB] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [VeiculosDB] SET ENABLE_BROKER GO ALTER DATABASE [VeiculosDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [VeiculosDB] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [VeiculosDB] SET TRUSTWORTHY OFF GO ALTER DATABASE [VeiculosDB] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [VeiculosDB] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [VeiculosDB] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [VeiculosDB] SET HONOR_BROKER_PRIORITY OFF GO ALTER DATABASE [VeiculosDB] SET READ_WRITE GO ALTER DATABASE [VeiculosDB] SET RECOVERY FULL GO ALTER DATABASE [VeiculosDB] SET MULTI_USER GO ALTER DATABASE [VeiculosDB] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [VeiculosDB] SET DB_CHAINING OFF GO EXEC sys.sp_db_vardecimal_storage_format N'VeiculosDB', N'ON' GO USE [VeiculosDB] GO /****** Object: Table [dbo].[Marca] Script Date: 06/22/2014 11:07:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Marca]( [Id] [int] IDENTITY(1,1) NOT NULL, [Nome] [nvarchar](max) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Modelo] Script Date: 06/22/2014 11:07:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Modelo]( [Id] [int] IDENTITY(1,1) NOT NULL, [Nome] [nvarchar](max) NOT NULL, [Marca_Id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Moto] Script Date: 06/22/2014 11:07:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Moto]( [Id] [int] IDENTITY(1,1) NOT NULL, [AnoFabricacao] [int] NOT NULL, [AnoModelo] [int] NOT NULL, [Chassi] [nvarchar](20) NOT NULL, [Cor] [nvarchar](max) NOT NULL, [Modelo_Id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Carro] Script Date: 06/22/2014 11:07:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Carro]( [Id] [int] IDENTITY(1,1) NOT NULL, [AnoFabricacao] [int] NOT NULL, [AnoModelo] [int] NOT NULL, [Chassi] [nvarchar](20) NOT NULL, [Cor] [nvarchar](max) NOT NULL, [QtdPortas] [int] NOT NULL, [Modelo_Id] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: ForeignKey [FK__Modelo__Marca_Id__0519C6AF] Script Date: 06/22/2014 11:07:46 ******/ ALTER TABLE [dbo].[Modelo] WITH CHECK ADD FOREIGN KEY([Marca_Id]) REFERENCES [dbo].[Marca] ([Id]) GO /****** Object: ForeignKey [FK__Moto__Modelo_Id__0EA330E9] Script Date: 06/22/2014 11:07:46 ******/ ALTER TABLE [dbo].[Moto] WITH CHECK ADD FOREIGN KEY([Modelo_Id]) REFERENCES [dbo].[Modelo] ([Id]) GO /****** Object: ForeignKey [FK__Carro__Modelo_Id__09DE7BCC] Script Date: 06/22/2014 11:07:46 ******/ ALTER TABLE [dbo].[Carro] WITH CHECK ADD FOREIGN KEY([Modelo_Id]) REFERENCES [dbo].[Modelo] ([Id]) GO
5- Alterar a String de Conexão no Arquivo Web.Config e também no App.Config no projeto do Teste unitário, alterando a tag Data Source = para o nome doServidor\Instância caso tenha. Por exemplo connectionString=“Data Source=NOMEMAQUINA\SqlExpress;Initial Catalog=VeiculosDB;Integrated Security=True”
O projeto foi compilado no Visual Studio 2010 utilizando a .Net Framework 4.0
Segue link para download
-Slides: Modulo7
–Exemplo: https://www.dropbox.com/s/dr2yrok7kynfn3d/FFB.Modulo7.Projeto.rar