Atualização de dados com Entity Framework
Fala pessoal, tudo certo?
Devo estar cometendo algum erro de principiantes, mas estou com a seguinte dúvida. Tenho uma Solution e nela tenho duas Web Application (website e painel administrativo) e uma Class Library usada em ambos os projetos para transações no DB com Entity Framework. O problema que está acontecendo é que todas as informações que são alteradas via painel administrativo ou se eu for direto no banco de dados e der um insert, por exemplo, deveriam ser atualizadas automaticamente no website, porém não acontece a não ser que eu pare o projeto e executar ele novamente (acredito que deva atualizar o context). Alguém sabe como seria o correto fazer nesse caso?
Segue um exemplo das minhas classes que fazem a conexão.
Devo estar cometendo algum erro de principiantes, mas estou com a seguinte dúvida. Tenho uma Solution e nela tenho duas Web Application (website e painel administrativo) e uma Class Library usada em ambos os projetos para transações no DB com Entity Framework. O problema que está acontecendo é que todas as informações que são alteradas via painel administrativo ou se eu for direto no banco de dados e der um insert, por exemplo, deveriam ser atualizadas automaticamente no website, porém não acontece a não ser que eu pare o projeto e executar ele novamente (acredito que deva atualizar o context). Alguém sabe como seria o correto fazer nesse caso?
Segue um exemplo das minhas classes que fazem a conexão.
public class NewsRepository : BaseRepository
{
public List<News> News
{
get { return _context.News.ToList(); }
}
public void Save(ref News news, ref string error)
{
try
{
if (news.NewsId > 0)
_context.Entry(news).State = EntityState.Modified;
else
_context.News.Add(news);
_context.SaveChanges();
}
catch (DbEntityValidationException ex)
{
foreach (var eve in ex.EntityValidationErrors)
foreach (var ve in eve.ValidationErrors)
error = ve.ErrorMessage;
}
catch (DbUpdateException ex) { error = ex.InnerException.InnerException.Message; }
catch (UpdateException ex) { error = ex.Message; }
}
}
public class BaseRepository
{
protected BaseContext _context;
public BaseRepository() { _context = Repository.InitializeContext(); }
}
public class Repository
{
private static BaseContext _context;
public static BaseContext InitializeContext()
{
if (_context == null)
_context = new BaseContext();
return _context;
}
}
public class BaseContext : DbContext
{
public BaseContext() : base("Name=FundacoesUFPel")
{
Database.SetInitializer(new CreateDatabaseIfNotExists<BaseContext>());
Database.Initialize(false);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
public DbSet<News> News { get; set; }
}
Tainã Ramos
Curtidas 0
Respostas
Jothaz
07/08/2019
Faça um teste:
1 - Abra o site.
2 - Atualize o ADM.
3 - Execute CRTL + F5 no site Web e veja se a atualização é replicada.
1 - Abra o site.
2 - Atualize o ADM.
3 - Execute CRTL + F5 no site Web e veja se a atualização é replicada.
GOSTEI 0
Tainã Ramos
07/08/2019
Faça um teste:
1 - Abra o site.
2 - Atualize o ADM.
3 - Execute CRTL + F5 no site Web e veja se a atualização é replicada.
1 - Abra o site.
2 - Atualize o ADM.
3 - Execute CRTL + F5 no site Web e veja se a atualização é replicada.
Não é problema de cache de navegador e sim o meu context que não atualiza :/
GOSTEI 0
Jothaz
07/08/2019
Depois de atualizar o ADM o banco de dados atualiza?
Você esta usando Code First ou Database First?
Você esta usando Code First ou Database First?
GOSTEI 0
Tainã Ramos
07/08/2019
Depois de atualizar o ADM o banco de dados atualiza?
Você esta usando Code First ou Database First?
Você esta usando Code First ou Database First?
Sim, o banco de dados atualiza normalmente.
Estou utilizando Code First.
Eu resolvi da seguinte forma, criei um método que instancia meu _context e chamo esse método sempre que vou realizar alguma consulta, porém não sei se é a melhor forma de fazer.
public class Repository
{
private static BaseContext _context;
public static BaseContext InitializeContext()
{
_context = new BaseContext();
return _context;
}
}
public class BaseRepository
{
protected BaseContext _context;
protected void UpdateContext()
{
_context = Repository.InitializeContext();
}
public BaseRepository()
{
UpdateContext();
}
}
public class NewsRepository : BaseRepository
{
public List<News> News
{
get { return _context.News.ToList(); }
}
public News GetById(int newsId)
{
UpdateContext();
return News.Where(n => n.NewsId == newsId).FirstOrDefault() ;
}
}
GOSTEI 0