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
的{{1}}控件。
我错过了什么?
错误是:
非静态方法需要目标
答案 0 :(得分:8)
您应首先测试currUser是否为null以及您的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);
如果您想确保只有一个用户符合您的条件,您可以替代使用FirstOrDefault的SingleOrDefault语句insead。
答案 1 :(得分:1)
“非静态方法需要目标”意味着范围内的某些对象是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;
}
检查并告诉我们您是否有相同的例外情况。
答案 2 :(得分: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;
}