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

时间:2011-10-31 16:34:03

标签: c# linq entity-framework-4.1

拥有此模型类

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

如果您需要有关数据库的更多信息,请通知我更新我的问题

3 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:1)

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

答案 2 :(得分:0)

检查您的类是否具有告诉Linq SQL如何将其与数据库表匹配的正确属性。

你的班级应该有

[Table(Name="Nombres")]

属性和属性应该有

[Column]

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

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