【发布时间】:2015-11-16 07:57:29
【问题描述】:
我需要一些关于用户注册的额外逻辑。所以我写了以下内容:
public class UniqueEmail : ValidationAttribute
{
IApplicationDbContext _context;
public UniqueEmail(IApplicationDbContext context)
{
_context = context;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
int count = _context.Users.Where(u => u.Email == value.ToString() && u.EmailConfirmed == true).Count();
if (count == 0) return ValidationResult.Success;
return new ValidationResult("unique email needed from attribute");
}
}
在Startup.cs:
services.AddScoped<IApplicationDbContext>(p => p.GetService<ApplicationDbContext>());
现在我应该如何将IApplicationDbContext 传递给 ViewModel 类中的属性?
[UniqueEmail(/*?*/)]
public string Email { get; set; }
一般来说,在这种情况下使用 DI 是个好主意吗?也许还有其他一些方法?
【问题讨论】:
-
是的。具有所有默认设置的 EF7
标签: c# dependency-injection asp.net-core custom-attributes