Ошибка при попытке пройтись по объектам из таблицы Azure - PullRequest
1 голос
/ 30 марта 2012

я получаю эту ошибку: «Тип текущего значения 'String.Empty' не совместим с ожидаемым типом 'System.Boolean'", когда я пытаюсь перебрать группу объектов из таблицы Azure, яЯ новичок в использовании Azure, так что это может быть что-то очень простое, ошибка, которую я получаю.

мой код:

private void registerButton_Click(object sender, RoutedEventArgs e)
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));

        // Create the table client
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

        // Get the data service context
        TableServiceContext serviceContext = tableClient.GetDataServiceContext();

        // Create a new customer entity
        user = new UserDetailsEntity();

        //Setting the fields of the new userEntity
        user.username = usernameText.Text;
        user.password = passwordText.Text;
        user.subscriptionID = subText.Text;
        user.subscriptionName = subscriptionNameText.Text;
        user.thumbprint = thumbprintText.Text;
        user.email = emailText.Text;
        user.phoneNumber = "3530" + numberText.Text;


        int rowCount = 1;


        CloudTableQuery<UserDetailsEntity> Query = (from en in serviceContext.CreateQuery<UserDetailsEntity>("userdetails")
                                                             select   en).AsTableServiceQuery<UserDetailsEntity>();

        //error occurs in the next line
        foreach (UserDetailsEntity ent in Query)
        {

            rowCount++;
        }

        user.RowKey = rowCount.ToString();





            // Add the new customer to the people table
            serviceContext.AddObject("userdetails", user);

            // Submit the operation to the table service
            serviceContext.SaveChangesWithRetries();
            //Set the variables so they can be retrieved when the next screen loads
            Application.Current.Properties["username"] = usernameText.Text;
            Application.Current.Properties["password"] = passwordText.Text;

            Window1 userHome = new Window1();
            this.Close(); //to close Password window 
            userHome.Show(); //to show Main form 
        }

1 Ответ

2 голосов
/ 30 марта 2012

Без большего количества кода я не могу сказать вам точно, где проблема, однако исключение довольно объяснительно. Вы пытаетесь установить логическое свойство для значения строки.

Если ошибка возникает в вашем foreach, как вы отметили в комментарии к коду, то я бы проверил, как настроен ваш объект UserDetailsEntity. Вероятно, есть свойство, которое установлено как логическое значение, но ваши данные возвращаются как String.Empty. Причина, по которой вы получаете это в своем foreach, заключается в том, что ваш запрос LINQ имеет тип IQueryable, поэтому он не будет фактически выполняться и заполнять ваши объекты, пока вы не получите фактический доступ к данным (вашим foreach) *. Таким образом, вы могли бы поставить точки останова в своих свойствах UserDetailsEntity, чтобы увидеть, какая из них, если это не очевидно, при просмотре кода.

* Имейте в виду, что это проблема N + 1, когда вы обращаетесь к базе данных на каждой итерации цикла. Вы можете решить эту проблему, вызвав .ToList (), чтобы сразу загрузить все ваши данные в ваш запрос ... если это проблема для вас, то есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...