2012-03-30 17 views
1

このエラーが発生し続ける "現在の値 'String.Empty'タイプは予想通りの 'System.Boolean'タイプと互換性がありません。 Azureテーブルのエンティティの束、私は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 
     } 

答えて

2

多くのコードがなければ、問題がある場所を正確に、私は、しかし、例外はかなりの説明で、あなたを伝えることはできません。 booleanプロパティを文字列の値に設定しようとしています。

コードコメントに記載されているようにforeachでエラーが発生している場合は、UserDetailsEntityオブジェクトがどのように設定されているかを確認します。ブール値として設定されているプロパティがありますが、データはString.Emptyとして戻ってきます。 LINQクエリがIQueryable型であるため、foreachで実際にデータにアクセスするまでは、実際には実行されずにオブジェクトが埋め込まれるためです。だから、あなたはUserDetailsEntityプロパティにブレークポイントを置くことで、コードを見ても邪魔にならない場合は、どのコードかを確認することができます。

*これはN + 1の問題で、ループの各繰り返しでデータベースを呼び出すことに注意してください。これを解決するには、.ToList()を呼び出してすべてのデータをクエリに一挙に読み込んでください。これが問題であれば、それが問題です。返信用

+0

乾杯、エラーが私はエラーが – StevenR

+0

が発生している理由として混乱しています理由はライン foreachの(クエリでUserDetailsEntity耳鼻咽喉科) に発生している@StevenR申し訳ありませんが、私は私が持っている、ことを逃しましたあなたがこれをより良く理解できるように私の答えを更新しました –

+0

ありがとう、私は間違いなくあなたが提案したことをやります – StevenR

関連する問題