Contexto de atualização do Entity Framework?

Como eu poderia atualizar meu contexto? Eu tenho entidades com base em visualizações do meu database e quando eu fiz uma atualização sobre uma tabela Entidade que tem propriedades de navegação para exibições, a entidade é atualização, mas a exibição não atualizar acordo com as novas atualizações … só deseja obter novamente o Db os dados. Obrigado!

A melhor maneira de atualizar entidades em seu contexto é descartar seu contexto e criar um novo.

Se você realmente precisa atualizar alguma entidade e está usando a abordagem Code First com a class DbContext, você pode usar

public static void ReloadEntity( this DbContext context, TEntity entity) where TEntity : class { context.Entry(entity).Reload(); } 

Para recarregar as propriedades de navegação da coleção, você pode usar

  public static void ReloadNavigationProperty( this DbContext context, TEntity entity, Expression>> navigationProperty) where TEntity : class where TElement : class { context.Entry(entity).Collection(navigationProperty).Query(); } 

Referência: https://msdn.microsoft.com/pt-br/library/system.data.entity.infrastructure.dbentityentry.reload(v=vs.113).aspx#M:System.Data.Entity.Infrastructure.DbEntityEntry .Recarregar

 yourContext.Entry(yourEntity).Reload(); 

Se você quiser recarregar entidades específicas, com o DbContextApi, o RX_DID_RX já deu a resposta.

Se você quiser recarregar / atualizar todas as entidades que você carregou:

Se você estiver usando o Entity Framework 4.1+ (EF5 ou EF 6 provavelmente), a API DbContext:

 public void RefreshAll() { foreach (var entity in ctx.ChangeTracker.Entries()) { entity.Reload(); } } 

Se você estiver usando entityFramework 4 (ObjectContext API):

 public void RefreshAll() { // Get all objects in statemanager with entityKey // (context.Refresh will throw an exception otherwise) var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); context.Refresh(RefreshMode.StoreWins, refreshableObjects); } 

O melhor conselho é tentar usar um “contexto de curta duração” e você evitará esse tipo de problema.

Eu escrevi alguns artigos sobre o assunto:

https://christianarg.wordpress.com/2013/06/13/entityframework-refreshall-loaded-entities-from-database/

Use o método Refresh :

 context.Refresh(RefreshMode.StoreWins, yourEntity); 

ou, alternativamente, descarte seu contexto atual e crie um novo.

context.Reload () não estava funcionando para mim no MVC 4, EF 5 então eu fiz isso.

 context.Entry(entity).State = EntityState.Detached; entity = context.Find(entity.ID); 

e está funcionando bem.

Atualizar o contexto de db com Recarregar não é recomendado devido a perdas de desempenho. É bom o suficiente e a melhor prática para inicializar uma nova instância do dbcontext antes de cada operação ser executada. Ele também fornece um contexto atualizado atualizado para cada operação.

 using (YourContext ctx = new YourContext()) { //Your operations } 

Eu fiz minha própria cabeça doer por nada! A resposta foi muito simples, acabei de voltar ao básico …

 some_Entities e2 = new some_Entities(); //your entity. 

adicione esta linha abaixo depois de atualizar / excluir – você está recarregando sua entidade – sem methods sofisticados de sistema.

 e2 = new some_Entities(); //reset.