3

ローカル サービスと Windows Azure データベースをセットアップしました。Azure データベースにアクセスしてすべての行からデータを取得できますが、一度に 1 つの列からしか取得できません。

データベースには、Person として扱われる各「レコード」を持つ People というテーブルがあります。テーブルの列の 1 つは「名前」で、次を使用してすべての名前を取得できます。

public List<string> GetAllPeople()
{
    string query = @"SELECT value Person.Name FROM DataEntities.People AS Person";

    List<string> resultsAsStrings = new List<string>();
    using (var context = new DataEntities())
    {
        ObjectQuery<string> results = context.CreateQuery<string>(query);
        foreach (string result in results)
        {
            if (result != null)
            {
                resultsAsStrings.Add(result);
            }
        }
    }
    return resultsAsStrings;
}

名前フィールドだけでなく、テーブル内のすべての列を持つすべての Person レコードのリストを取得できるように、クエリを変更するにはどうすればよいでしょうか?

Azure テーブルからデータを読み取るためのより良い方法はありますか?

乾杯!

編集:クエリを次のように変更すると: @"SELECT value Person FROM DataEntities.People AS Person";

null が返され、WP7 アプリがクラッシュします。(また、文字列の代わりに Person を受け入れるようにコードを調整しました。EG ObjectQuery

4

1 に答える 1

1

CreateQuery への呼び出しを変更してみてください。

From: CreateQuery<string>
To: CreateQuery<Person>

Person を選択すると文字列ではなく Person になるため、これが必要です。

では、タイプ (Person) をエイリアスとして使用しないようにしていただけますか? 次のようなことを試してください:

SELECT VALUE pers FROM DataEntities.People AS pers

そして、単にcontext.Peopleを使用しないのはなぜですか?

于 2012-07-27T11:59:30.560 に答える