2012-11-10 159 views
0

我有一种方法来验证我的用户,但即使我在我的表中有记录,它也会返回user = null为什么这个Linq返回null?

public bool AuthenticateUser(string username, string password) 
{ 
    var user = GetSingleRow(c => c.Email.Equals(username) && c.Password.Equals(password) && IsActive); 

    if(user !=null && user.Id > 0) 
    { 
    // my statements 
    } 
} 

类&方法实现:

public partial class UserAccount :IRepository<UserAccount> 
{ 
    private static readonly MeriRanchiDataContext Context; 
    public UserAccount GetSingleRow(Func<UserAccount, bool> criteria) 
    { 
     return Context.UserAccounts.Where(criteria).SingleOrDefault(); 
     //tried this also: return Context.UserAccounts.SingleOrDefault(criteria); 
    } 
} 
+7

你真的在你的数据库中有明文密码吗?另外,你是否知道,因为你使用委托而不是表达式树,这将会获取所有用户帐户并在本地应用谓词? –

+0

我在我的数据库中存储纯文本密码。 –

+0

@JonSkeet“”另外,你是否知道,因为你使用委托而不是表达式树,这将获取所有用户帐户并在本地应用谓词?“”这是使用谓词的错误方法吗? –

回答

4

你在IsActive缺少你范围变量(C)。这样做:

var user = GetSingleRow(c => c.Email.Equals(username) && c.Password.Equals(password) && c.IsActive);