首页 新闻 会员 周边

ef读取对象是 条件不匹配为什么会异常

0
悬赏园豆:10 [已解决问题] 解决于 2011-05-15 11:36

public Admin Login(string uid, string pwd)
{
try
{
using (dbcm = new DBContextManager())
{
Admin ad
= dbcm.Admins.Single(a => a.Account.Equals(uid));
if (ad != null && ad.Password.Equals(pwd))//非空 && 密码匹配
return ad;
else
return new Admin { AdminId=-1 };
}
}
catch
{
return null;
}
}

问题补充:

我使用一个不存在的账户调用登录方法,在查询数据库的时候就报异常 提示  '序列不包含任何元素'  怎么控制啊

JCdon的主页 JCdon | 初学一级 | 园豆:2
提问于:2011-05-14 10:08
< >
分享
最佳答案
0

可以先写一个判断用户名是否存在的方法                 

  int userFlag = context.Admin.Where(a => a.AdminId== userId).ToList().Count;

if(userFlag>0)

//在匹配密码字段。  方法同上

收获园豆:10
wenthink | 菜鸟二级 |园豆:417 | 2011-05-15 01:10
这样不是要操作好多次数据库?
JCdon | 园豆:2 (初学一级) | 2011-05-15 11:24
十分感谢 通过!
JCdon | 园豆:2 (初学一级) | 2011-05-15 11:35
其他回答(2)
0

纯直觉:

a.Account.Equals(uid)

 

可能引发空引用异常。

是字符串比较对吧?

换string.Equals静态方法试试。

undefined | 园豆:898 (小虾三级) | 2011-05-14 10:28
我前面有控制空值的.
支持(0) 反对(0) JCdon | 园豆:2 (初学一级) | 2011-05-14 17:32
0
Admin ad = dbcm.Admins.Single(a => a.Account.Equals(uid));
这里出错对吧! 把Single()换掉!可以换成Where(),判断它的Count
Chenkun | 园豆:806 (小虾三级) | 2011-05-14 12:12
觉得有点道理 明天试试
支持(0) 反对(0) JCdon | 园豆:2 (初学一级) | 2011-05-14 17:32
还是不对 我勒个去的
支持(0) 反对(0) JCdon | 园豆:2 (初学一级) | 2011-05-14 17:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册