Datastore Query Array - PullRequest
       10

Datastore Query Array

0 голосов
/ 08 мая 2018

Я пытаюсь выполнить запрос к хранилищу данных, чтобы получить список имен и цен. Тем не менее, я получаю это сообщение об ошибке:

Невозможно неявно преобразовать тип 'Google.Cloud.Datastore.V1.DatastoreQueryResults' в 'System.Collections.Generic.List<TestApp.Models.AllSportsStore>'

Это код, который я использую:

Страница AllSportsStore.cs

public DatastoreDb _db;

[BindProperty]
public List<AllSportsStore> SportsStoreList { get; set; }


public void OnGet()
{
    Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "xxxxx.json"));
    _db = DatastoreDb.Create("projectid");
    Query query = new Query("Sports_db");
    IEnumerable<Entity> stores = _db.RunQuery(query).Entities;
    SportsStoreList = stores.Select(_ => new AllSportsStore
    {
        Name = _["Name"].ToString(),
        Price = _["Price"].ToString(),
    }).ToList();
}

Страница AllSportsStore.cshtml

@for (var i = 0; i < Model.SportsStoreList.Count; i++)
{
    <tr>
        <td>
            @Html.DisplayFor(model => model.SportsStoreList[i].Name)
        </td>
        <td>
            @Html.DisplayFor(model => model.SportsStoreList[i].Price)
        </td>
    </tr>
}

Это изображение хранилища данных

Datastore image

Обновлен код результата на основе комментария enter image description here

1 Ответ

0 голосов
/ 10 мая 2018

Как уже указывалось в комментариях, вы пытаетесь присвоить неправильный тип свойству SportsStoreList.

Иметь модель для хранения деталей сущности из хранилища

public class SportsStoreItem {
    public string Name { get; set; }
    public decimal Price { get; set; }
}

Используйте модель в AllSportsStore.cs Страница

public class AllSportsStore : PageModel {

    private readonly DatastoreDb _db;

    public AllSportsStore() {
        _db = DatastoreDb.Create("projectid");
    }

    [BindProperty]
    public List<SportsStoreItem> SportsStoreList { get; set; }

    public IActionResult OnGet() {
        Query query = new Query("Sports_db");
        IEnumerable<Entity> stores = _db.RunQuery(query).Entities;
        SportsStoreList = stores.Select(_ => new SportsStoreItem {
            Name = (string)_["Name"],
            Price = (decimal)_["Price"]
        }).ToList();

        return Page();
    }
}

Обратите внимание, как сущности, извлеченные из базы данных хранилища данных, были преобразованы в строго типизированные объекты.

После этого вы сможете получить доступ к элементам списка в представлении / странице.

@for (var i = 0; i < Model.SportsStoreList.Count; i++) {
    <tr>
        <td>
            @Html.DisplayFor(model => model.SportsStoreList[i].Name)
        </td>
        <td>
            @Html.DisplayFor(model => model.SportsStoreList[i].Price)
        </td>
    </tr>
}
...