【发布时间】:2019-08-02 00:03:46
【问题描述】:
又是一个问题。我有这样的问题: Non-static method requires a target
所以,我创建了我的验证,当我直接在 Create View 中使用它时它可以正常工作,但我不仅在 create 中还需要它。长话短说,这是我的验证。
public class EmailUpisaniAttribute : ValidationAttribute
{
private ApplicationDbContext db = new ApplicationDbContext();
public override bool IsValid(object value)
{
if (value is VMUpi VMUpi)
{
var pre = db.Upi.FirstOrDefault(x=>x.Email == VMUpi.Upi.Email && x.Upi_ID != VMUpi.Upi.Upi_ID);
if (pre == null)
{
return true;
}
}
return false;
}
}
所以,在我发布的那个链接上,他们说这可能是因为 lambda 在 where 但我不知道我能做些什么来解决这个问题。
【问题讨论】:
-
有时 EF(我想?)查询中的错误消息可能很难理解。尝试将
db.Upi.FirstOrDefault...更改为db.Upi.ToList().FirstOrDefault并查看在物化查询上执行 lambda 时是否会收到更好的错误消息。 -
TY。我有,现在它说 System.NullReferenceException:'对象引用未设置为对象的实例。它指向 x.Email
-
小心不要遍历孩子,并在调用孩子的孩子时假设它们不为空。例如 VMUpi.Upi.Email。 Upi 可能为空,而您正在调用电子邮件
-
@dsadsdasdas 那么您将经历与引用问题完全相同的事情。您应该为 `VMUpi.Upi 添加一个空检查
标签: asp.net-mvc