我希望有人能指出我正确的方向。我是.NET的新手。
我想要使用SignalR监控数据库。每当满足某些参数的新记录被推入数据库时,我想将其广播到我的客户端。
我将如何实现这一目标?
答案 0 :(得分:0)
SignalR 这在服务器和客户端之间工作,它不是为监控数据库而设计的,但是当服务器具有要传递给连接客户端的信息时,它可用于调用驻留在客户端软件中的更新功能。
实体框架 您可以编写一个继承自DbContext的MyDatabaseContext 然后你可以覆盖所有方法,比如SaveChanges,SaveChangesAsync,并添加你自己的代码来创建一个" audit"允许您捕获代码有关更新的方法。
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映射等....
它可能会指向正确的方向。