我希望有人能指出我正确的方向。我是 .NET 的新手。
我有一个数据库,我想使用 SignalR 进行监视。每当满足某些参数的新记录被推送到数据库中时,我都想将其广播给我的客户端。
我将如何做到这一点?
SignalR这在服务器和客户端之间工作,它不是为了监视数据库而设计的,但是当服务器具有要传递给连接的客户端的信息时,它可用于调用驻留在客户端软件中的更新函数。
实体框架你可以编写一个继承自 DbContext 的 MyDatabaseContext然后,您可以覆盖所有方法,如SaveChanges,SaveChangesAsync,并添加自己的代码以创建"审核"方法,允许您捕获有关更新的代码。
public MyDatabaseContext : DbContext
{
private readonly IAuditDatabaseChange _auditDatabaseChange;
static CommonDatabaseContext()
{
Database.SetInitializer<CommonDatabaseContext>(null);
}
public CommonDatabaseContext() {
_runningMigrations = true;
}
public CommonDatabaseContext(IAuditDatabaseChange auditService)
{
_auditDatabaseChangeService = auditService;
_runningMigrations = false;
}
public override async Task<int> SaveChangesAsync()
{
if (!_runningMigrations)
{
await _auditDatabaseChange.SaveAudit(this);
}
return await base.SaveChangesAsync();
}
public override int SaveChanges()
{
if (!_runningMigrations)
{
Task.Run(() => _auditDatabaseChange.SaveAudit(this)).Wait();
}
return base.SaveChanges();
}
}
当然,这只是如何实现它的一个想法,你必须定义所有服务,提供和配置你选择的依赖注入框架,添加上下文中所有缺失的内容,如初始化和所需的EF映射等。
它可能会为你指明正确的方向。