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#)
Clique e Confira

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=&quot;data source=.\SQLEXPRESS;initial catalog=EscolaDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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:

 


José Carlos Macoratti