Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este passo a passo mostra como mapear vários tipos de entidade para uma única tabela modificando um modelo com o Designer de Estrutura de Entidade (Designer EF).
Um dos motivos pelos quais você pode querer usar a divisão de tabelas é atrasar o carregamento de algumas propriedades ao usar o carregamento lento para carregar seus objetos. Você pode separar as propriedades que podem conter uma quantidade muito grande de dados em uma entidade separada e carregá-la somente quando necessário.
A imagem a seguir mostra as janelas principais que são usadas ao trabalhar com o Designer EF.
Pré-requisitos
Para concluir este passo a passo, você precisará de:
- Uma versão recente do Visual Studio.
- O Banco de Dados de Exemplo da Escola.
Configurar o Projeto
Este passo a passo está usando o Visual Studio 2012.
- Abra o Visual Studio 2012.
- No menu Arquivo , aponte para Novo e clique em Projeto.
- No painel esquerdo, clique em Visual C#e selecione o modelo de Aplicativo de Console.
- Insira TableSplittingSample como o nome do projeto e clique em OK.
Criar um modelo com base no banco de dados escolar
- Clique com o botão direito do mouse no nome do projeto no Gerenciador de Soluções, aponte para Adicionar e clique em Novo Item.
- Selecione Dados no menu à esquerda e selecione ADO.NET Modelo de Dados de Entidade no painel Modelos.
- Insira TableSplittingModel.edmx para o nome do arquivo e clique em Adicionar.
- Na caixa de diálogo Escolher Conteúdo do Modelo, selecione Gerar do banco de dados e clique em Avançar.
- Clique em Nova Conexão. Na caixa de diálogo Propriedades da Conexão, insira o nome do servidor (por exemplo, (localdb)\mssqllocaldb), selecione o método de autenticação, digite School para o nome do banco de dados e clique em OK. A caixa de diálogo Escolher Sua Conexão de Dados é atualizada com as configurações de conexão do banco de dados.
- Na caixa de diálogo Escolher Seus Objetos de Banco de Dados, expanda o nó Tabelas e selecione a tabela Pessoa. Isso adicionará a tabela especificada ao modelo de Escola .
- Clique em Concluir.
O Designer de Entidade, que fornece uma superfície de design para editar seu modelo, é exibido. Todos os objetos selecionados na caixa de diálogo Escolher Seus Objetos de Banco de Dados são adicionados ao modelo.
Mapear duas entidades para uma única tabela
Nesta seção, você dividirá a entidade Person em duas entidades e as mapeará para uma única tabela.
Observação
A entidade Person não contém nenhuma propriedade que possa conter uma grande quantidade de dados; ele é usado apenas como um exemplo.
- Clique com o botão direito do mouse em uma área vazia da superfície de design, aponte para Adicionar Novo e clique em Entidade. A caixa de diálogo Nova Entidade é exibida.
- Digite HireInfo para o nome da entidade e PersonID para o nome da propriedade-chave.
- Clique em OK.
- Um novo tipo de entidade é criado e exibido na superfície de design.
- Selecione a propriedade HireDate do tipo de entidade Person e pressione as teclas Ctrl+X.
- Selecione a entidade HireInfo e pressione Teclas Ctrl+V .
- Crie uma associação entre Person e HireInfo. Para fazer isso, clique com o botão direito do mouse em uma área vazia da superfície de design, aponte para Adicionar Novo e clique em Associação.
- A caixa de diálogo Adicionar Associação é exibida. O nome PersonHireInfo é fornecido por padrão.
- Especifique multiplicidade 1(Um) em ambas as extremidades da relação.
- Pressione OK.
A próxima etapa requer a janela Detalhes do Mapeamento . Se você não conseguir ver essa janela, clique com o botão direito do mouse na superfície de design e selecione Detalhes de Mapeamento.
Selecione o tipo de entidade HireInfo e clique <em Adicionar uma Tabela ou Exibição> na janela Detalhes do Mapeamento .
Selecione Pessoa na <lista suspensa Adicionar uma Tabela ou Exibir> campo. A lista contém tabelas ou exibições para as quais a entidade selecionada pode ser mapeada. As propriedades apropriadas devem ser mapeadas por padrão.
Selecione a associação PersonHireInfo na superfície de design.
Clique com o botão direito do mouse na associação na superfície de design e selecione Propriedades.
Na janela Propriedades , selecione a propriedade Restrições Referenciais e clique no botão de reticências.
Selecione Pessoa na lista suspensa Principal .
Pressione OK.
Usar o modelo
- Cole o código a seguir no método Main.
using (var context = new SchoolEntities())
{
Person person = new Person()
{
FirstName = "Kimberly",
LastName = "Morgan",
Discriminator = "Instructor",
};
person.HireInfo = new HireInfo()
{
HireDate = DateTime.Now
};
// Add the new person to the context.
context.People.Add(person);
// Insert a row into the Person table.
context.SaveChanges();
// Execute a query against the Person table.
// The query returns columns that map to the Person entity.
var existingPerson = context.People.FirstOrDefault();
// Execute a query against the Person table.
// The query returns columns that map to the Instructor entity.
var hireInfo = existingPerson.HireInfo;
Console.WriteLine("{0} was hired on {1}",
existingPerson.LastName, hireInfo.HireDate);
}
- Compile e execute o aplicativo.
As instruções T-SQL a seguir foram executadas no banco de dados school como resultado da execução deste aplicativo.
O INSERT a seguir foi executado como resultado da execução do contexto. SaveChanges() e combina dados das entidades Person e HireInfo
O SELECT a seguir foi executado como resultado da execução do contexto. People.FirstOrDefault() e seleciona apenas as colunas mapeadas para Pessoa
O SELECT a seguir foi executado como resultado do acesso à propriedade de navegação existingPerson.Instructor e seleciona apenas as colunas mapeadas para HireInfo