c# - 在将对象保存到数据库之前或之后,我将如何将其排入队列?
问题描述
我现在正在 ASP.NET MVC 中创建队列管理系统
第一种情况:
客户会去笔记本电脑,输入他们的名字,然后确认接收队列号,然后数据将保存到数据库中。
我的问题是我将如何以及在哪里将它们排入队列?这样我可以稍后在代理调用它们时将它们出列?
信息亭控制器:
public static Queue<Queue> todayQueue = new Queue<Queue>();
public ActionResult SetQueueInfo([Bind(Include = "QueueId,Name,QueueNumber,ServiceId,ServiceName,ServiceLetter")] Queue queue, int? id)
{
if (ModelState.IsValid)
{
db.Queues.Add(queue);
db.SaveChanges();
return View(queue);
}
return View();
}
第二种情况,代理将单击下一步,然后它将为下一个客户提供先进先出的服务。
我怎样才能让他们出队?这是我的“完成”按钮
TellerScreenController
public static Queue<QueueTable> todayQueue;
public ActionResult BtnNext()
{
var first = todayQueue.Dequeue();
return RedirectToAction("Index");
}
解决方案
我对你的要求有一些想法。
您需要创建一个Queue
(来自 System.Collections 命名空间)作为静态变量。
添加两个动作Reverse()
和Reset()
当您添加新项目时,您推送到队列并保存到您的数据库
当你想处理队列时,你调用Dequeue()
从列表中获取第一个项目也从队列中删除。
因为队列使用静态变量,所以需要支持方法 reset Queue for next reserve。
private static Queue<QueueTable> todayQueue = new Queue<QueueTable>();
public ActionResult SetQueueInfo([Bind(Include = "QueueId,Name,QueueNumber,ServiceId,ServiceName,ServiceLetter")] QueueTable queue, int? id)
{
if (ModelState.IsValid)
{
todayQueue.Enqueue(queue);
db.Queues.Add(queue);
db.SaveChanges();
return View(queue);
}
return View();
}
public ActionResult Reserve()
{
var first = todayQueue.Dequeue();
// pass to view and handle it
return View(first);
}
public ActionResult ResetQueue()
{
// reset queue after finish
todayQueue = new Queue<QueueTable>();
}
在cshtml中显示
@model QueueTable
<p>@Model.QueueNumber</p>
推荐阅读
- r - 无法在 Windows 10 上的 R 中加载 statnet
- ios - ARKit – 将物体隐藏在墙后
- python - 如何在 Windows 机器中的 python 中将 tor 与 selenium-webdriver 一起使用?
- flutter - 颤振横幅不适合
- c - 如何对 PostgreSQL C 语言函数进行单元测试
- sas - 如何在 SAS 中为大型数据集添加列值
- java - 在 Spring Boot 上为 Axon 框架设置 Mongo 扩展
- java - android布局的波纹动画
- c# - Postsharp 不登录跟踪级别
- r - here::here() 在我的 R 项目中的子目录名称之前插入一个字符串“\u2068”