Curso Entity Framework - Dados Locais (DbSet.Local) - XXX
Na aula de hoje vou apresentar a propriedade Local do DbSet. (aula anterior) |
|
Chegou o Curso ASP .NET MVC 5 Vídeo Aulas (C#) |
A propriedade Local do DBSet fornece acesso às entidades que atualmente estão sendo rastreadas pelo contexto e não foram marcadas como Excluídas. Esta propriedade controla as entidades cujo estado da entidade é adicionado, modificado e inalterado.
A propriedade Local obtém um ObservableCollection<T>
que representa uma visão local de todas as entidades com estado
Added, Unchanged e Modified neste conjunto.
Este ponto de vista local vai permanecer em sincronia conforme
as entidades são adicionadas ou removidas a partir do contexto.
Da mesma forma, as entidades adicionadas ou removidas da visão
local serão automaticamente adicionadas a ou removidas do
contexto.
Esta
propriedade pode ser usada para vincular dados e preencher o conjunto de dados,
por exemplo, utilizando o método de extensão Load, e, em seguida,
vincular aos dados locais através desta propriedade.
Preparando o ambiente
Vamos usar a solução criada na aula 11 - Entity Framework - Consultas Projeção - para mostrar o Change Tracking
Abra a solução EF6_EscolaDB criada nesta aula inclua um novo com o nome EF6_LocalDbSet na solução;
No Menu FILE clique em Add -> New Project e selecione o template Visual C# -> Console Application informando o nome EF6_LocalDbSet :
Para concluir inclua uma referência no projeto EF6_LocalDbSet para o projeto EF6_EscolaDB e inclua também a string de conexão do projeto EF6_EscolaDB no arquivo App.Config do projeto atual.
<connectionStrings> < add name="EscolaDBEntities" connectionString="metadata=res://*/EscolaDB.csdl|res://*/EscolaDB.ssdl|res://*/EscolaDB.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQLEXPRESS;initial catalog=EscolaDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /></ connectionStrings>
|
Inclua também uma referência ao Entity Framework usando o Nuget e na opção Manage marcando o projeto EF6_LocalDBSet:
A seguir inclua o código abaixo no arquivo Program.cs:
using System;
using EF6_EscolaDB;
namespace EF6_LocalDbSet
{
class Program
{
static void Main(string[] args)
{
using (var ctx = new EscolaDBEntities() )
{
Console.WriteLine("Inclui um novo Aluno e Remove outro ");
ctx.Alunos.Add(new Aluno() { AlunoNome = "Nome_Novo_Aluno" });
ctx.Alunos.Remove(ctx.Alunos.Find(2));
// percorre o contexto
Console.WriteLine("Usando Local : ");
foreach (var _aluno in ctx.Alunos.Local)
{
Console.WriteLine("Encontrado {0}: {1} com estado {2}",
_aluno.AlunoId, _aluno.AlunoNome, ctx.Entry(_aluno).State);
}
// Realiza uma consulta conra o banco de dados
Console.WriteLine("\n Consultando o DbSet: ");
foreach (var _aluno in ctx.Alunos)
{
Console.WriteLine("Encontrado {0}: {1} com estado {2}",
_aluno.AlunoId, _aluno.AlunoNome, ctx.Entry(_aluno).State);
}
Console.ReadKey();
}
}
}
}
|
Agora antes de executar defina para o projeto atual a propriedade Set As Startup Project.
Executando o projeto iremos obter o seguinte resultado:
Note que usando a propriedade Local temos a visão somente da entidade que foi recém incluída mas não a removida. Com o DbSet temos uma visão de todas as entidades do contexto.
Como Local é um ObservableCollection() não é aconselhável usá-la com DbSet, pois isso afetaria o desempenho, visto que o DbSet mantém o controle de milhares de entidades.
Na próxima aula vamos abordar o conceito de Múltiplos diagramas no Entity Framework.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#