Cadê meu médico:
CREATE DATABASE CadeMeuMedicoBD
GO
USE CadeMeuMedicoBD
GO
58
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
CREATE TABLE Usuarios
(
IDUsuario BIGINT IDENTITY(1,1) NOT NULL,
Nome VARCHAR(80) NOT NULL,
Login VARCHAR(30) NOT NULL,
Senha VARCHAR(100) NOT NULL,
Email VARCHAR(100) NOT NULL,
PRIMARY KEY(IDUsuario)
);
GO
CREATE TABLE Medicos
(
IDMedico BIGINT IDENTITY(1,1) NOT NULL,
CRM VARCHAR(30) NOT NULL,
Nome VARCHAR(80) NOT NULL,
Endereco VARCHAR(100) NOT NULL,
Bairro VARCHAR(60) NOT NULL,
Email VARCHAR(100) NULL,
AtendePorConvenio BIT NOT NULL,
TemClinica BIT NOT NULL,
WebsiteBlog VARCHAR(80) NULL,
IDCidade INT NOT NULL,
IDEspecialidade INT NOT NULL,
PRIMARY KEY(IDMedico)
);
GO
CREATE TABLE Especialidades
(
IDEspecialidade INT IDENTITY(1,1) NOT NULL,
Nome VARCHAR(80) NOT NULL,
PRIMARY KEY(IDEspecialidade)
);
GO
CREATE TABLE Cidades
(
59
4.5. Banco de dados primeiro?
Casa do Código
IDCidade INT IDENTITY(1,1) NOT NULL,
Nome VARCHAR(100) NOT NULL,
PRIMARY KEY(IDCidade)
);
GO
ALTER TABLE Medicos
ADD CONSTRAINT fk_medicos_cidades
FOREIGN KEY(IDCidade)
REFERENCES Cidades(IDCidade)
GO
ALTER TABLE Medicos
ADD CONSTRAINT fk_medicos_especialidades
FOREIGN KEY(IDEspecialidade)
REFERENCES Especialidades(IDEspecialidade)
GO
INSERT INTO Cidades (Nome) VALUES ('Blumenau')
INSERT INTO Cidades (Nome) VALUES ('São José do Rio Preto')
GO
INSERT INTO Especialidades (Nome) VALUES ('Cardiologista')
INSERT INTO Especialidades (Nome) VALUES ('Neurologista')
GO
INSERT INTO Usuarios (Nome, Login, Senha, Email)
VALUES ('Administrador',
'admin',
'40BD001563085FC35165329EA1FF5C5ECBDBBEEF',
'admin@cdmm.com')
GO
A figura 4.7 apresenta o resultado obtido ao executarmos o código apresentado
pela listagem 8 no SQL Server 2012 Express.
60
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
Figura 4.7: Server explorer do SQL Server Management Studio
Agora que já possuímos o banco de dados físico para a aplicação, estamos aptos a dar o próximo passo, isto é, criar seu mapeamento via Entity Framework para que a aplicação possa utilizá-lo. Para isso, adicionarei à pasta Models um novo tipo de arquivo, chamado ADO Entity Data Model, conforme ilustra a figura 4.8.
61
4.5. Banco de dados primeiro?
Casa do Código
Figura 4.8: Selecionando a opção adequada para a criação do modelo de dados
Ao realizar tal procedimento, você estará automaticamente iniciando o processo de mapeamento requerido pelo EF. Como parte deste procedimento, uma nova janela solicitando o tipo de mapeamento que será realizado (figura 4.9) será apresentada. Para a construção deste exemplo, você deverá selecionar a primeira opção, isto é, Generate from database e prosseguir.
62
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
Figura 4.9: Selecionando o tipo de mapeamento que será realizado
A próxima janela solicita informações de string de conexão. O que faremos aqui é apontar o EF para o banco de dados que criamos recentemente.
Para isso, clique no botão New connection. Nela, você deverá informar alguns dados de conexão, como endereço para o servidor de banco de dados, usuário e senha (se possuir) para acesso e o nome do banco de dados ao qual deseja se conectar. A figura 4.10 apresenta a tela devidamente preenchida.
63
4.5. Banco de dados primeiro?
Casa do Código
Figura 4.10: Adicionando informações de conexão
Ao clicar em OK você será levado de volta à tela anterior, mas agora, com a string de conexão já selecionada. Basta nomear a variável que será salva (e posteriormente referenciada) no arquivo Web.config da aplicação e prosseguir (ver figura 4.11).
64
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
Figura 4.11: Selecionando string de conexão e nomeando a variável para Web.config A próxima tela solicitará que você selecione os objetos do banco de dados que
serão mapeados. Em nosso caso, selecionaremos todas as tabelas, conforme sugere a figura 4.12. Você também deverá nomear o namespace ao qual estão agrupados os arquivos do modelo. Utilizaremos o nome CadeMeuMedicoBDModel. Após isso,
clique em Finish.
65
4.5. Banco de dados primeiro?
Casa do Código
Figura 4.12: Selecionando os objetos a serem mapeados do banco de dados
Ao finalizar o processo, o Entity Framework irá criar toda a estrutura de classes necessária para que se possa utilizar o banco de dados em um nível mais alto. Se tudo correu bem, você deverá estar visualizando uma imagem semelhante à apresentada pela figura 4.13.
66
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
Figura 4.13: Modelo de classes gerado pelo Entity Framework
Além disso, algumas modificações estruturais no projeto poderão ser claramente notadas através da solution explorer. No diretório References, por exemplo, você perceberá a adição de uma nova DLL, a saber, System.Data.Entity. A mudança
mais importante entretanto, está evidentemente na pasta Models. Isso porque o EF