none
Problema ao inserir entidade (Entity Framework Code First) RRS feed

  • Pergunta

  • Estou com problema ao tentar inserir uma entidade no Banco.

    using System.Windows;
    using System.Windows.Controls;
    using Aplicacao.Business;
    using Aplicacao.Data.ClassRepository;
    using Aplicacao.Data.ClassRepositoryInterfaces;
    
    namespace Aplicacao.Presentation.UI.WPF
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            private IPessoaRepository PessoaRepository { get; set; }
            private IEnderecoRepository EnderecoRepository { get; set; }
            private ICidadeRepository CidadeRepository { get; set; }
    
            public MainWindow()
            {
                InitializeComponent();
    
                PessoaRepository = new PessoaRepository();
                EnderecoRepository = new EnderecoRepository();
                CidadeRepository = new CidadeRepository();
    
            }
    
            private void InserirPessoaHandler(object sender, RoutedEventArgs e)
            {
                var cidade = CidadeRepository.Single(c => c.Id == (int) cmbCidades.SelectedValue);
    
                var endereco = new Endereco
                                   {
                                       Logradouro = tbLogradouro.Text.ToUpper(),
                                       Cidade = cidade
                                   };
    
                EnderecoRepository.Add(endereco);
    
                EnderecoRepository.SaveChanges();
    
                var pessoa = new Pessoa
                                 {
                                     Nome = tbNome.Text.ToUpper(),
                                     Endereco = EnderecoRepository.Single(o => o.Id == endereco.Id)
                                 };
    
                PessoaRepository.Add(pessoa);
    
                PessoaRepository.SaveChanges();
            }
        }
    }
    

    Ao tentar adicionar o endereco ocorre o erro:

    "Um objeto de entidade não pode ser referenciado por várias instâncias de IEntityChangeTracker."

    Alguém saberia me dizer o que estou fazendo de errado?

    quinta-feira, 27 de dezembro de 2012 17:31

Respostas

  • Olá Tabgyn.

    Não gusto mto de repositories genéricos, pois eles causam problemas como os que vc esta sofrendo. Fora que quando vc for trabalhar com atualização das entidades vc poderá acabar gerando dados duplicados na base de dados, pois vc não terá controle da atualização das instâncias associadas.

    Geralmente eu crio uma interface de repositório e crio um repositório para cada entidade que deve ser persistida. Assim consigo ter mais controle do processo de atualização.

    Semana passada ajudei uma equipe que trabalha comigo que estava sofrendo do mesmo problema que vc, por conta do uso de repositories genéricos e uso de uma única instância de acesso a dados.

    Acredito que o melhor seja não utilizer um repositório genério de criar as instâncias das classes de contexto de dados dentro de blocos USING.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Tabgyn sexta-feira, 28 de dezembro de 2012 10:57
    quinta-feira, 27 de dezembro de 2012 21:51
    Moderador
  • Olá Tabgyn,

    Isso é simples de resolver utilizando o método Include.

    Por conta de LadyLoading entidades agregadas não são carregadas automaticamente. Para tanto vc pode utilizer o método Include para indicar quais propriedades agregadas podem ser carregadas ou não.

    Veja este post: http://ferhenriquef.com/2012/03/19/uso-de-include-em-consultas-com-o-entity-framework-code-first/

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Tabgyn sexta-feira, 28 de dezembro de 2012 10:56
    quinta-feira, 27 de dezembro de 2012 23:59
    Moderador
  • Olá Tabgyn,

    Veja se isso ajuda:

     	public IList<Estado> GetAll(Expression<Func<Estado, bool>> @where)
            {
    	    IList<Estado> returnValue = null;
                using (var contexto = new AplicacaoContexto())
                {
    		returnValue = contexto.Estados.Include(t => t.Cidades).Where(where).ToList();
                }
    	    return returnValue;
            }

    []s!

    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Tabgyn quinta-feira, 3 de janeiro de 2013 15:12
    quinta-feira, 3 de janeiro de 2013 00:03
    Moderador

Todas as Respostas

  • Olá Tabgyn.

    Tudo beleza?

    Provavelmente isso acontece por causa de um problema nas suas classes de repositório, pois vc esta retornando uma instância de Cidade sem dar um Dispose no context que fez a conexão com o banco de dados ou deixando de fazer um Detach na instância retornada pelo método.

    Poderia postar o código do repositório CidadeRepository?

    Veja este post, talvez lhe ajude: http://ferhenriquef.com/2012/05/15/dbcontext-e-o-objectcontext-no-deixe-seus-dados-em-memria/

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 27 de dezembro de 2012 21:36
    Moderador
  • ... além deste post, veja se isso pode lhe ajudar: http://ferhenriquef.com/2012/12/17/entity-framework-desabilitando-o-tracking-de-entidades/

    ... mas de qualquer maneira, é melhor fechar sua instância com o DbContext.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 27 de dezembro de 2012 21:38
    Moderador
  • Fernando

    Segue meus repositorios:

    Repo generico.

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Entity;
    using System.Linq;
    using System.Linq.Expressions;
    using Aplicacao.Data.GenericRepositoryInterfaces;
    
    namespace Aplicacao.Data.GenericRepository
    {
        public class Repository<T> : IRepository<T> where T : class
        {
            #region Properties
    
            protected DbContext DbContext { get; set; }
    
            protected IDbSet<T> DbSet { get; set; }
    
            #endregion
    
            #region Constructors
    
            public Repository()
                : this(new DataContext.AplicacaoEntities())
            {
            }
    
            public Repository(DbContext context)
            {
                DbContext = context;
                DbSet = DbContext.Set<T>();
            }
    
            #endregion
    
            #region CrudMethods
    
            public void Add(T entity)
            {
                using (DbContext)
                {
                    try
                    {
                        if (entity == null)
                        {
                            throw new ArgumentNullException("entity");
                        }
    
                        DbSet.Add(entity);
                    }
                    catch (Exception e)
                    {
    
                        throw new Exception(e.Message);
                    }
                }
            }
    
            #endregion
    
            #region SaveChanges
    
            public void SaveChanges()
            {
                DbContext.SaveChanges();
            }
    
            #endregion
    
            #region Dispose
    
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
    
            protected virtual void Dispose(bool disposing)
            {
                if (!disposing || DbContext == null) return;
                DbContext.Dispose();
                DbContext = null;
            }
    
            #endregion
        }
    }

    Repositorio para cidade.

    using Aplicacao.Business;
    using Aplicacao.Data.ClassRepositoryInterfaces;
    using Aplicacao.Data.GenericRepository;
    
    namespace Aplicacao.Data.ClassRepository
    {
        public class CidadeRepository : Repository<Cidade>, ICidadeRepository
        {
        }
    }

    Acreditava que com o Dispose em Repository.cs não teria esse problema.


    • Editado Tabgyn quinta-feira, 27 de dezembro de 2012 21:47 Code muito extenso :p
    quinta-feira, 27 de dezembro de 2012 21:46
  • Olá Tabgyn.

    Não gusto mto de repositories genéricos, pois eles causam problemas como os que vc esta sofrendo. Fora que quando vc for trabalhar com atualização das entidades vc poderá acabar gerando dados duplicados na base de dados, pois vc não terá controle da atualização das instâncias associadas.

    Geralmente eu crio uma interface de repositório e crio um repositório para cada entidade que deve ser persistida. Assim consigo ter mais controle do processo de atualização.

    Semana passada ajudei uma equipe que trabalha comigo que estava sofrendo do mesmo problema que vc, por conta do uso de repositories genéricos e uso de uma única instância de acesso a dados.

    Acredito que o melhor seja não utilizer um repositório genério de criar as instâncias das classes de contexto de dados dentro de blocos USING.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Tabgyn sexta-feira, 28 de dezembro de 2012 10:57
    quinta-feira, 27 de dezembro de 2012 21:51
    Moderador
  • Nesse  caso se eu tenho o contexto dentro do using eu tenho que mandar o Dispose para cada método?

    O fato de eu ter optado pelo repositorio generico era para diminuir a quantidade de código, por hora são 5 entidades, mas quando for 300, ter que criar um repositorio para cada um tsc ...

    É a primeira vez que tento o EF, antes a persistencia era feita com NHibernate e sei lá, estou achando muito mais trabalhoso e demandando muito mais tempo na implementação.
    quinta-feira, 27 de dezembro de 2012 22:37
  • Olá Tabgyn,

    Vc costuma utilizer repositories genéricos no NHibernate?

    Sim, realmente sera cansativo ter de criar um repositório para cada entidade quando seu número é bastante elevado.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 27 de dezembro de 2012 23:29
    Moderador
  • Sim Fernando, era apenas um único repositorio.

    Bem fiz como você sugeriu e para exemplificar o repositorio para cidade ficou assim:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Linq.Expressions;
    using Aplicacao.Business;
    using Aplicacao.Data.DataContext;
    using Aplicacao.Data.GenericRepositoryInterfaces;
    
    namespace Aplicacao.Data.ClassRepository
    {
        public class CidadeRepository : IRepository<Cidade>
        {
            private AplicacaoEntities _contexto;
    
            public CidadeRepository()
            {
                _contexto = new AplicacaoEntities();
            }
    
            public void Add(Cidade entity)
            {
                using (_contexto = new AplicacaoEntities())
                {
                    try
                    {
                        if (entity == null)
                        {
                            throw new ArgumentNullException("entity");
                        }
    
                        _contexto.Cidades.Add(entity);
    
                        _contexto.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                }
            }
    
            public void Update(Cidade entity)
            {
                using (_contexto = new AplicacaoEntities())
                {
                    try
                    {
                        if (entity == null)
                        {
                            throw new ArgumentNullException("entity");
                        }
    
                        var entry = _contexto.Entry(entity);
                        _contexto.Cidades.Attach(entity);
                        entry.State = EntityState.Modified;
    
                        _contexto.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                }
            }
    
            public void Delete(Cidade entity)
            {
                using (_contexto = new AplicacaoEntities())
                {
                    try
                    {
                        if (entity == null)
                        {
                            throw new ArgumentNullException("entity");
                        }
    
                        if (_contexto.Entry(entity).State == EntityState.Detached)
                        {
                            _contexto.Cidades.Attach(entity);
                        }
                        _contexto.Cidades.Remove(entity);
    
                        _contexto.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                }
            }
    
            public Cidade Single(Expression<Func<Cidade, bool>> @where)
            {
                using (_contexto = new AplicacaoEntities())
                {
                    return _contexto.Cidades.Single(where);
                }
            }
    
            public IList<Cidade> GetAll()
            {
                using (_contexto = new AplicacaoEntities())
                {
                    return _contexto.Cidades.ToList();
                }
            }
    
            public IList<Cidade> GetAll(Expression<Func<Cidade, bool>> @where)
            {
                using (_contexto = new AplicacaoEntities())
                {
                    return _contexto.Cidades.Where(where).ToList();
                }
            }
    
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
    
            protected virtual void Dispose(bool disposing)
            {
                if (!disposing || _contexto == null) return;
                _contexto.Dispose();
                _contexto = null;
            }
        }
    }
    

    Só que agora ao tentar listar as cidades(GetAll()) a  instância de ObjectContext para Estado é descartada.

    Minhas Classes:

    public class Cidade { #region Primitive Properties public int Id { get; set; } public string Nome { get; set; } public bool Capital { get; set; } #endregion #region Navigation Properties public virtual Estado Estado { get; set; } #endregion public override string ToString() { return string.Format("Cidade Id: {0}", Id); } }

    public class Estado
        {
            #region Primitive Properties

            public int Id { get; set; }
            public string Nome { get; set; }
            public string Sigla { get; set; }

            #endregion

            public override string ToString()
            {
                return string.Format("Estado Id: {0}", Id);
            }
        }


    Meu contexto tá assim:

    public class AplicacaoEntities : DbContext
        {
            #region DbSet Properties
    
            public DbSet<Pessoa> Pessoas { get; set; }
    
            public DbSet<Endereco> Enderecos { get; set; }
    
            public DbSet<Cidade> Cidades { get; set; }
            
            public DbSet<Estado> Estados { get; set; }
    
            #endregion
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                #region Pessoas
    
                modelBuilder.Entity<Pessoa>().ToTable("Pessoas");
                modelBuilder.Entity<Pessoa>().Property(p => p.Nome).IsRequired();
                modelBuilder.Entity<Pessoa>().HasOptional(p => p.Endereco).WithOptionalDependent();
    
                #endregion
    
                #region Enderecos
    
                modelBuilder.Entity<Endereco>().ToTable("Enderecos");
                modelBuilder.Entity<Endereco>().Property(e => e.Logradouro).IsRequired();
                modelBuilder.Entity<Endereco>().HasRequired(e => e.Cidade).WithOptional();
    
                #endregion
    
                #region Cidades
    
                modelBuilder.Entity<Cidade>().ToTable("Cidades");
                modelBuilder.Entity<Cidade>().Property(c => c.Nome).IsRequired();
                modelBuilder.Entity<Cidade>().HasRequired(c => c.Estado).WithMany();
    
                #endregion
    
                #region Estados
    
                modelBuilder.Entity<Estado>().ToTable("Estados");
                modelBuilder.Entity<Estado>().Property(e => e.Nome).IsRequired();
    
                #endregion
    
                base.OnModelCreating(modelBuilder);
            }
        }

    Post ficou grande com tanto code, mas já estou ficando muito perdido nessa história, da forma como esta o repositorio antes eu conseguia listar sem problemas, agora Estado não vem com a Cidade.

    quinta-feira, 27 de dezembro de 2012 23:54
  • Olá Tabgyn,

    Isso é simples de resolver utilizando o método Include.

    Por conta de LadyLoading entidades agregadas não são carregadas automaticamente. Para tanto vc pode utilizer o método Include para indicar quais propriedades agregadas podem ser carregadas ou não.

    Veja este post: http://ferhenriquef.com/2012/03/19/uso-de-include-em-consultas-com-o-entity-framework-code-first/

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Tabgyn sexta-feira, 28 de dezembro de 2012 10:56
    quinta-feira, 27 de dezembro de 2012 23:59
    Moderador
  • Entendi, funcionou.

    Mas essa não é a ideia por trás do contexto.Configuration.LazyLoadingEnabled que por default já vem setado como true?

    Resolve um problema aparece outro e dessa vez o innerexception não está ajudando em nada. Vou dar um tempo e voltar com isso só em 2013 :D
    sexta-feira, 28 de dezembro de 2012 10:56
  • Fernando sei que é pedir muito, mas se puder pegar meu codigo e me dizer o que diabos estou fazendo de errado eu agradeceria.

    Segue link: http://sdrv.ms/12OnARJ
    sábado, 29 de dezembro de 2012 18:36
  • Olá Tabgyn,

    Posso olhar seu código sim.

    Mas que tipo de erro devo procurar?

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    segunda-feira, 31 de dezembro de 2012 13:20
    Moderador
  • Fernando, primeiramente obrigado por se disponibilizar em me ajudar.

    Basicamente estou com problemas na persistencia, a principio consegui fazer a parte de trazer a informação do banco sem problemas, mas quando cheguei na parte de inserir foi onde começou meus problemas e dai o motivo de eu ter criado esse tópico. Desde então com as suas informações fui alterando meu código afim de atender minhas necessidades. Acontece que agora nem um nem outro estão funcionando, agora até mesmo ao tentar fazer um "select" no banco é retornado erro. Minha intenção é ter um CRUD básico funcionando.
    Não sei a minha arquitetura está montada da melhor forma ou não. Quero ter uma arquitetura básica para estudar e dar inicio a projetos futuros utilizando o EF.

    O erro no momento ocorre nesse trecho de código em Aplicacao.Presentation.UI.WPF.MainWindow:

    private void InicializeCombobox()
            {
                cmbEstados.DisplayMemberPath = "Nome";
                cmbEstados.SelectedValuePath = "Id";
                cmbCidades.DisplayMemberPath = "Nome";
                cmbCidades.SelectedValuePath = "Id";
    
                foreach (var estado in EstadoRepository.GetAll())
                {
                    cmbEstados.Items.Add(estado);
                }
            }
    Adicionei os sql para geraçao das tabelas utilizadas em Solution Items caso necessite.

    Desde já agradeço.

    segunda-feira, 31 de dezembro de 2012 17:40
  • TabGyn,

    Logo mais volto com a resolução dos seus problemas.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    terça-feira, 1 de janeiro de 2013 13:32
    Moderador
  • Olá TabGyn,

    Ajustei sua camada de acesso a dados.

    Para os meus testes eu criei um inicializador de banco de dados chamado CreateDatabaseIfModelChangesSeedData que insere alguns registros padrões, como Estado e Cidade. Fiz isso para que o banco de dados, quando criado automaticamente, já construisse a estrutura das tabelas e jogasse alguns valores padrões no banco de dados (como cidade e estado de São Paulo).

    Fiz alguns ajustes na camada de acesso a dados. Comentei algumas linhas e ajustei outras.

    Segue o link com o conteúdo ajustado: https://skydrive.live.com/redir?resid=7DECE45BBF0DB70F!1338&authkey=!AM5lRivwZ4V3XiA

    Tive de apagar a pasta de Packages e do Recharper, pois senão o pacote ficaria mto grande.

    A aplicação que testei foi a WPF, percebi que a aplicação WEB ainda estava sendo construída.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Data Platform Development
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil


    terça-feira, 1 de janeiro de 2013 14:38
    Moderador
  • Agora é perseguição comigo.
    :(

    Tá dando erro na hora de buscar os estados ...

    {"The model backing the 'AplicacaoContexto' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269)."}
    Única coisa que fiz foi alterar a string de conexão na camada de apresentação.
    quarta-feira, 2 de janeiro de 2013 15:33
  • Olá Tabgyn,

    Provavelmente é um problema de alguma alteração feita na estrutura do banco de dados, que faz com  que o modelo de classes fique diferente da estrutura de suas tabelas.

    Vc chegou a fazer alguma alteração na estrutura do seu banco de dados? Criou alguma coluna nova?

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 2 de janeiro de 2013 15:38
    Moderador
  • Se tem algo diferente é na hora do mapeamento no contexto, em relação as classes o banco está correto.

    Isso não está funcionando pra mim. Eu queria aprender, mas já estou muito frustado com esse EF.

    Mas agradeço sua ajuda Fernando, foi de grande valia.

    quarta-feira, 2 de janeiro de 2013 16:05
  • Olá Tabgyn,

    No começo é difícil mesmo. Não fique frustrado, pois realmente faz parte.

    Veja este post: http://ferhenriquef.com/2012/12/27/entity-framework-power-tools/

    É sobre uma ferramenta que pode lhe ajustar.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 2 de janeiro de 2013 16:16
    Moderador
  • Tô falando que é perseguição hehe ...

    Utilizei esse tool e o mapeamento agora parece estar ok ... entretando voltei a um dos primeiros problemas postados aqui, ao selecionar Estado, a lista de cidades desse estado não vêm junto com o objeto Estado. E agora o uso do include sugerido anteriormente não está funcionando, ao tentar chamar a propriedade Cidades(lista de cidades) dentro do include, a mesma não aparece.

    public IList<Estado> GetAll(Expression<Func<Estado, bool>> @where)
            {
                using (var contexto = new AplicacaoContexto())
                {
                    return contexto.Estados.Include(t => t.Cidades).Where(where).ToList();
                }
            }
    Ao debugar, olhando o objeto de Estado, aparece esse erro em Cidades:
    "A instância de ObjectContext foi descartada e não pode mais ser usada para operações que exijam uma conexão."


    • Editado Tabgyn quarta-feira, 2 de janeiro de 2013 17:29
    quarta-feira, 2 de janeiro de 2013 17:26
  • Olá Tabgyn,

    Veja se isso ajuda:

     	public IList<Estado> GetAll(Expression<Func<Estado, bool>> @where)
            {
    	    IList<Estado> returnValue = null;
                using (var contexto = new AplicacaoContexto())
                {
    		returnValue = contexto.Estados.Include(t => t.Cidades).Where(where).ToList();
                }
    	    return returnValue;
            }

    []s!

    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Tabgyn quinta-feira, 3 de janeiro de 2013 15:12
    quinta-feira, 3 de janeiro de 2013 00:03
    Moderador
  • Consegui, foi falha minha esqueci de fazer uma referência.

    Problema agora voltou a ser na hora de inserir Pessoa, acusa que Id de Estado está null, só não descobrir aonde, pq debuguei e o Id de Estado está lá.

    Sinceramente não estou gostando do EF, sofrendo d+ pra fazer um simples CRUD.

    • Editado Tabgyn quinta-feira, 3 de janeiro de 2013 15:24
    quinta-feira, 3 de janeiro de 2013 15:12