我有一个视图模型,它应该检查新实体的标签是否唯一(尚未在数据库中)。
目前我已经在视图模型类中完成了它:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (PowerOrDuty != null)
{
if (PowerOrDuty.Identifier == null)
{
using (var db = new PowersAndDutiesContext())
{
var existingLabels = db.PowersAndDuties.Select(pod => pod.Label);
if (existingLabels.Contains(PowerOrDuty.Label))
{
yield return new ValidationResult("Cannot create a new power or duty because another power or duty with this label already exists");
}
}
}
......
请注意,这是一个小型内部应用程序,数据库很小,我的时间有限,所以代码并不完美。
我觉得从视图模型访问数据库可能是一种不好的做法。视图模型应该直接访问数据库吗?它应该能够调用存储库来获取可用的标签吗?是否应该在控制器中进行需要数据库访问的验证?