【发布时间】:2021-08-25 22:32:27
【问题描述】:
我的问题是当我对上下文执行 CRUD 操作时,我的组件中没有进行更改。
DbContext 注册如下:
services.AddDbContextFactory<DBContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("my_ConnectionStrings")),
lifetime: ServiceLifetime.Transient);
在上面的代码中,我将ServiceLifetime配置为Transient。因此,每次请求时都必须创建一个新的服务实例。
这是我的代码:
[Inject] IDbContextFactory<DBContext> DbFactory;
private string updateMessage(int messageID)
{
DBContext _context = DbFactory.CreateDbContext();
var result = _context.Messages.FirstOrDefault(s => s.MessageID == messageID);
if (result != null)
{
result.LastUpdate= DateTime.Now.ToString("HH:mm:ss");
_context.SaveChanges();
}
var assert = _context.Messages.FirstOrDefault(s => s.MessageID == messageID);
return "Last update is: " + assert.LastUpdate;
}
在上面的代码中,我将工厂注入到我的组件中并创建了新实例。但是我的组件中没有考虑上下文更改。我想观察我的组件的上下文变化。
在上面的代码中,我修改了上下文,但没有任何变化,方法返回之前的值LastUpdate。
【问题讨论】:
-
您的 UI 代码是什么样的?您是否有任何绑定到该字段以触发更新?
标签: c# asp.net-core entity-framework-core blazor blazor-server-side