C# 非静态方法需要一个目标
你好,, 在我的新用户注册表单上验证时出错 我的C# 非静态方法需要一个目标,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,你好,, 在我的新用户注册表单上验证时出错 我的PMS\u用户表没有记录(null)。我还尝试检查currUser的null控件 我错过了什么 错误是: 非静态方法需要一个目标 “非静态方法需要目标”表示作用域内的某个对象为null 尝试检查上下文和var结果值: private PMS_USERS currUser; private bool validateUserName() { dbContext = new PmsEntities(); var validateUser
PMS\u用户
表没有记录(null
)。我还尝试检查currUser
的null
控件
我错过了什么
错误是:
非静态方法需要一个目标 “非静态方法需要目标”表示作用域内的某个对象为
null
尝试检查上下文和var结果值:
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();
}
检查并告诉我们您是否有相同的异常。使用
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;
}
您应该首先测试currUser是否为null,以及您的dbContext是否为null
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;
}
其次,您可以简化查询,如yhat:
if (currUser == null) return false;
if (dbContext == null) throw new Exception ("The dbContext has not been set");
然后将return语句更改为:
var validateUser = dbContext.PMS_USERS.Where(p=> p.LOGICALREF != currUser.LOGICALREF && p.USERNAME == currUser.USERNAME);
如果您想确保只有一个用户与您的条件相对应,您可以在FirstOrDefault之外使用SingleOrDefault语句。这里似乎需要一个Try/Catch…您能解释一下
return validateUser.Any()之间的区别吗代码>和返回(validateUser.FirstOrDefault()!=null)代码>?你为什么建议第二名而不是第一名?事实上,我认为是一样的。答案更简单。问题来自此问题中的Where子句。添加if(dbContext!=null)检查对我有效。你能解释一下原因吗?
return (validateUser.FirstOrDefault() != null);