0
在我的应用程序中,我有一个检查,它检查一堆数据库表的COUNT。如果这些COUNTS中的每一个都高于某个阈值,那么它将属性设置为活动。这里是用户添加房间信息我如何使此代码可重用?
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "ID,RoomTypeID,Description")] Room room, int propertyId)
{
if (ModelState.IsValid)
{
room.ID = Guid.NewGuid();
room.DateCreated = DateTime.Now;
room.PropertyID = propertyId;
db.Rooms.Add(room);
await db.SaveChangesAsync();
var roomCount = db.Rooms.Where(r => r.PropertyID == propertyId).Count();
var rateCount = db.Rates.Where(r => r.PropertyID == propertyId).Count();
var imageCount = db.PropertyImage.Where(r => r.PropertyID == propertyId).Count();
if(roomCount >= 3 && rateCount >= 3 && imageCount >= 3)
{
//Set Property as ACTIVE
}
return RedirectToAction("Index");
}
的问题,我有一个控制器的一个例子,是我要运行这个检查(3个数据库计数和的“如果”语句)上一大堆控制器。我不想在每个控制器上为每个动作都复制这个配置。此外,这项检查可能容易改变,所以我想在一个地方更新它。
我最好如何去做这件事?我应该创建某种帮助类吗?
谢谢
我是(显然是错误的)的印象,你只能从控制器类访问数据库?我正在使用实体框架,'助手'是正确的术语,所以我可以谷歌,看看有没有关于这种事情的任何教程? – Gavin5511
我会稍微阅读一下N层架构来理解它背后的理论。为了您现在的具体需求,保持简单并使用“助手”或“实用程序”术语可能没有问题。 –
另外,访问控制器之外的数据库是完全可以接受的。例如,有些人更喜欢只从与Web应用程序项目完全不同的项目访问数据库。 –