6
private PMS_USERS currUser;
private bool validateUserName()
{
    dbContext = new PmsEntities();
    var validateUser = dbContext.PMS_USERS.Where(p=> p.LOGICALREF != currUser.LOGICALREF).Where(p=> p.USERNAME == currUser.USERNAME);
    return !validateUser.Any();
}

您好,我在验证我的新用户注册表单时遇到错误。

我的PMS_USERS表没有记录(null)。我还尝试检查null.currUser

我错过了什么?

错误是:

非静态方法需要一个目标

4

3 回答 3

9

您应该首先测试 currUser 是否为空,并且您的 dbContext 也是如此。

if (currUser == null) return false;
if (dbContext == null) throw new Exception ("The dbContext has not been set");

其次,您可以像 yhat 一样简化查询:

 var validateUser = dbContext.PMS_USERS.Where(p=> p.LOGICALREF != currUser.LOGICALREF &&  p.USERNAME == currUser.USERNAME);

然后将 return 语句更改为:

return (validateUser.FirstOrDefault() != null);

如果您想确保只有一个用户符合您的条件,您也可以使用 SingleOrDefault 语句而不是 FirstOrDefault。

于 2013-09-30T12:56:17.827 回答
2

“非静态方法需要一个目标”意味着范围内的某些对象是null.

尝试检查上下文和 var 结果值:

 dbContext = new PmsEntities();
 if (dbContext != null && currUser != null)
 {
     var validateUser = dbContext.PMS_USERS.Where(p=> p.LOGICALREF != currUser.LOGICALREF && p.USERNAME == currUser.USERNAME);

    if (validateUser !=null)
    {
       return !validateUser.Any();
    }
    else
       return null;
 }

检查它并告诉我们您是否有相同的异常。

于 2013-09-30T12:52:49.427 回答
1

利用

private PMS_USERS currUser;
private bool validateUserName()
{
    dbContext = new PmsEntities();
    return PMS_USERS != null 
        ? var validateUser = dbContext.PMS_USERS.Where(p=> p.LOGICALREF != currUser.LOGICALREF).Where(p=> p.USERNAME == currUser.USERNAME).Any()
        : false;
}
于 2013-09-30T12:53:34.470 回答