в последовательности нет элементов, выполняющих запрос linq

#c# #linq #entity-framework-4.1

#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) amp;amp; (U.Password == encripPassword))
                            select U).First();
 

Если вам нужна дополнительная информация о базе данных, дайте мне знать, чтобы обновить мой вопрос

Комментарии:

1. Действительно ли в таблице есть строка с этим именем и паролем? Когда вы запускаете сгенерированную инструкцию SQL в SQL Management Studio, получаете ли вы результат?

2. @p.campbell Да, это приносит мне результаты

Ответ №1:

  • Действительно ли в таблице есть строка с этим именем и паролем?
  • Когда вы запускаете сгенерированную инструкцию SQL в SQL Management Studio, получаете ли вы результат?

Предложите проверить ваши два значения в UserName и encripPassword на наличие допустимых значений.

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

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

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

Комментарии:

1. В таблице базы данных есть столбцы a Nombre и a password

2. Да, в таблице есть столбцы, но есть ли в ней запись с конкретными значениями для тех столбцов, которые вы ищете? Первый () Метод расширения LINQ с генерирует исключение, если строки не возвращаются, независимо от правильности столбцов…

Ответ №2:

Очевидно, что вы не указываете на правильную базу данных, или у вас нет имени пользователя с этим паролем (я предполагаю, что зашифрованный пароль не соответствует тому, что находится в БД. Попробуйте использовать FirstOrDefault() , затем вы можете проверить значение Null, если пароль неверен…

Ответ №3:

Проверьте, имеет ли ваш класс надлежащие атрибуты, которые сообщают Linq to SQL, как сопоставить его с таблицей базы данных.

Ваш класс должен иметь

 [Table(Name="Nombres")]
 

атрибут и свойства должны иметь

 [Column]
 

атрибуты, некоторые из которых также должны быть первичными ключами и т. Д.

Если у вас этого еще нет, я предлагаю вам сгенерировать класс с помощью инструмента генерации классов сущностей: http://msdn.microsoft.com/en-us/library/bb425822.aspx#linqtosql_topic32