Возвращение Enumerable из контекста БД на основе примера - PullRequest
0 голосов
/ 13 октября 2019

Я разрабатываю ASP.NET Web API 2.2, и мне нужны мои данные из моего dbcontext.

. До сих пор я делал это так:

return _context.Client;

Iхотите, чтобы те же данные были возвращены как IEnumerable тип, подобный этому:

[HttpGet("[action]")]
public IEnumerable<Client> GetClients()
{
    return Enumerable.Range(1, 5)
                     .Select(index => new Client
                                      {
                                          Name = "John",
                                          Surname = "Smiths"
                                      });
}

Как я могу это сделать, и чтобы Джон и Смит были заменены последовательными данными из контекста?

Ответы [ 2 ]

1 голос
/ 13 октября 2019

_context.Client уже IEnumerable и может использоваться как есть. Например:

[HttpGet("[action]")]
public IEnumerable<Client> GetClients(int fromId, int toId)
{
    return _context.Client.Where(c => c.Id <= toId && c.Id >= fromId).Take(100);
}

Это всего лишь пример, который вы можете сделать для другого запроса.

0 голосов
/ 13 октября 2019

Окей, что-то изменилось.

Я отредактировал метод getclient:

[HttpGet("[action]")]
public  string GetClient()
{
    var settings = new JsonSerializerSettings()
    {
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
        Error = (sender, args) =>
        {
            args.ErrorContext.Handled = true;
        },
    };

    return JsonConvert.SerializeObject(_context.Client, settings);
}

И теперь, когда я запускаю его в vs, я получаю массив с правильными данными. На IIS я тоже получаю массив, только он пустой - но без ошибок.

Должен ли я что-то настроить в своем Api для правильного подключения к БД? У меня есть строка conn в appsettings.json, Startup addDbContext, что-нибудь еще?

...