【问题标题】:Webmatrix - Conditional database changes?Webmatrix - 有条件的数据库更改?
【发布时间】:2013-11-05 16:28:58
【问题描述】:

所以我有一个问题,我网站上的属性要么处于活动状态,要么处于非活动状态。默认情况下,属性被视为非活动状态,我希望它仅在满足某些条件后才变为活动状态。例如,我只希望它在提供描述、应用了至少一个费率并且分配了有效的邮政编码时才激活。

我将如何实现这一点,因为用户可能不会在首次注册时填充所有这些信息,并且可能希望稍后再回来以在它变为活动状态之前完成更新。

我能想到的唯一方法是运行“if”语句,每次我更新我可以使用的属性的信息时,但我想知道是否有任何其他条件方法可以实现这一点,数据库定期检查是否应该将某些内容设置为活动?

谢谢,加文

【问题讨论】:

  • 我会在更新与属性相关的数据时这样做。
  • 同意迈克。您要么必须在每次更新数据时设置数据,要么在每次读取数据时将其用作标准。通过将逻辑添加到您的编辑代码中,更有可能集中您的代码并遵循 DRY 原则。
  • 如果它更容易,您的数据库条目还可以有一个 isActive "bit" 属性,您可以在更新数据时调整为真或假(如果这不是迈克已经谈论)。这样,在读取数据库时,您只需检查该值。

标签: razor webmatrix


【解决方案1】:

如果您运行的是完整版本的 SQL Server,您可以使用触发器和位标志列来完成此操作,如 VoidKing 建议的。在保存时,触发器将触发,您将编写一个复杂的 sql 语句来测试是否填充了所有需要的字段并将位标志设置为 true 或 false,具体取决于。

我通过两个保存按钮以更简单的方式完成了类似的操作。一个不触发任何验证的“保存”和一个将验证应用于所有需要的字段的“保存并释放”按钮。两个按钮都保存了数据,但保存和释放按钮只有在验证通过时才会保存,它将位域“isActive”保存为 1,而其他保存方法会将其保存为 0。

可能是一个好方法,否则您在单个保存按钮上留下检查逻辑,这也不是一个坏方法。

【讨论】:

  • 使用计算域会是另一种解决方案吗?它可能会慢一点,所以如果速度是最重要的,这可能是一个问题,但这意味着你没有两组数据来同步你的工作——你的位字段只会作为基础数据。
猜你喜欢
  • 2013-07-31
  • 2014-11-21
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 2012-07-10
相关资源
最近更新 更多