EntityFramework和SignalR - 广播数据库的更新?

时间:2014-11-20 09:49:31

标签: c# .net entity-framework signalr

我希望有人能指出我正确的方向。我是.NET的新手。

我想要使用SignalR监控数据库。每当满足某些参数的新记录被推入数据库时​​,我想将其广播到我的客户端。

我将如何实现这一目标?

1 个答案:

答案 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映射等....

它可能会指向正确的方向。