序列中没有执行linq查询的元素

本文关键字:linq 查询 元素 执行 | 更新日期: 2023-09-27 18:12:47

拥有这个模型class

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();

如果您需要更多关于数据库的信息,请告诉我更新我的问题

序列中没有执行linq查询的元素

  • 表实际上有一行的名称和密码吗?
  • 当您在SQL Management Studio中运行生成的SQL语句时,您是否得到一个结果?

建议检查UserName和encrypppassword中的两个值是否有效。

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.
}

显然,您没有指向正确的数据库,或者您没有用户名与该密码(我猜加密的密码与数据库中的内容不匹配)。尝试使用FirstOrDefault(),然后你可以检查Null,如果密码是错误的…

检查您的类是否具有适当的属性,告诉Linq to SQL如何将其与数据库表进行匹配。

你的类应该有

[Table(Name="Nombres")]

属性,并且属性应该包含

[Column]

属性,有些也应该是主键等

如果你还没有这个,我建议你使用实体类生成工具生成类:http://msdn.microsoft.com/en-us/library/bb425822.aspx#linqtosql_topic32