c# - 如何允许 SignalR 使用 EF6 将更新从 DB 推送到浏览器
问题描述
如何允许SignalR
使用 Entity Framework 6 将更新从 SQL Server 数据库推送到浏览器?
这是我的操作方法:
public ActionResult Index()
{
var currentGates = _ctx.Transactions
.GroupBy(item => item.SubGateId)
.SelectMany(group => group.OrderByDescending(x => x.TransactionDateTime)
.Take(1))
.Include(g => g.Card)
.Include(g => g.Student)
.Include(g => g.Student.Faculty)
.Include(g => g.Student.Department)
.Include(g => g.SubGate)
.ToList();
return View(currentGates);
}
经过大量搜索,我得到的唯一结果是:
ASP.NET MVC 5 SignalR、SqlDependency 和 EntityFramework 6
我已经尝试了建议的方法,但没有奏效。除此之外,我发现了一个非常重要的安全问题,即在隐藏字段中存储敏感数据!
我的问题是:如何根据Insert
事务表上的任何内容更新我的视图?
解决方案
所以基本上你需要做的是覆盖SaveChanges()
你的 SignalR 函数的方法和操作:
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
public override int SaveChanges()
{
var entities = ChangeTracker.Entries().Where(x => x.Entity is Transactions && x.State == EntityState.Added) ;
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
foreach (var entity in entities)
{
hubContext.Clients.All.notifyClients(entity);
}
return base.SaveChanges();
}
}
推荐阅读
- mysql - MySQL - 每年从 UNION 计算 SUM(field)
- amazon-web-services - AWS Cognito 中的 Microsoft oidc 允许多个租户
- powershell - 另存为 .txt 文件 CMD/powershell 输出
- php - 后端中的 TYPO3 TCA 字段顺序
- javascript - 如何用另一个数组值替换javascript中的数组值?
- azure - Azure 托管应用程序 - 带有应用程序链接的 ViewDefinition.json 操作
- javascript - 单击按钮时如何将所有其他布尔值切换为false
- mysql - 检查值是否存在于另一个(连接的)表中并相应地在结果中填写列
- linux - for 循环在 bash 中创建的整数比预期的要多
- jenkins - gitlab gui 不显示从阶段测试返回的 jenkinsfile 报告