2011-10-31 60 views
0

有了這個模型類序列不具有執行LINQ查詢

public class Usuario 
{ 
    #region Atributos 
    private int _intID = 0; 
    private Perfil _Perfil_FK = null; 
    private String _strNombre = ""; 
    private String _strPassword = ""; 
    #endregion 

    #region Propiedades 
    public int ID 
    { 
     get { return _intID; } 
     set { _intID = value; } 
    } 
    public virtual Perfil Perfil_FK 
    { 
     get { return _Perfil_FK; } 
     set { _Perfil_FK = value; } 
    } 
    public int PerfilID { get; set; } 
    public String Nombre 
    { 
     get { return _strNombre; } 
     set { _strNombre = value; } 
    } 
    public String Password 
    { 
     get { return _strPassword; } 
     set { _strPassword = value; } 
    } 
    #endregion 
} 

我嘗試使用此查詢,數據庫表有數據元素,所以我看不出問題嗎?

Usuario user = (from U in _db.Usuario 
          where ((U.Nombre == model.UserName) && (U.Password == encripPassword)) 
          select U).First(); 

如果您需要了解數據庫的詳細信息讓我知道更新我的問題

+1

表格是否真的有一行包含該名稱和密碼?當你在SQL Management Studio中運行生成的SQL語句時,你會得到一個結果嗎? –

+0

@ p.campbell是的,它給我帶來的結果 – Jorge

回答

3
  • 表中是否有一行用那個名字和密碼?
  • 當你在SQL Management Studio中運行生成的SQL語句,你會得到一個結果嗎?

建議檢查UserName和encripPassword中的兩個值以獲取有效值。

Usuario user = _db.Usuario 
        .FirstOrDefault(x=>x.Nombre == model.UserName 
           && x.Password == encripPassword); 

string sql = (user as ObjectQuery).ToTraceString(); //the SQL query generated. 

if(user==null) 
{ 
    //doesn't exist. 
} 
+0

數據庫表有一個'Nombre'和一個'password'列 – Jorge

+0

是的,它給我帶來的結果 – Jorge

+0

是的,表有列,但它是否有記錄您正在尋找的那些列的具體值? First()LINQ擴展方法,如果不返回任何行,則拋出異常,無論列是否正確... – Daryl

1

顯然你不是指向正確的數據庫,或者您沒有用戶名與密碼(我猜加密的密碼與數據庫中的內容不匹配,請嘗試使用FirstOrDefault(),然後如果密碼錯誤,則可以檢查Null ...