Я создал веб-API для подключения и обновления данных на SQL Сервере, используя Entity Framework 6 (сначала для базы данных).
Я замечаю, когда я генерирую контроллеры для своей таблицы, функция Get<XXX>
возвращает только строку таблицы без включения дочерних строк.
Это можно исправить с помощью метода расширения System.Data.Entity.Include
?
Однако, когда я сделал простой тест для получения строки таблицы и связанной с ней дочерние строки, я получаю ответ
StatusCode: 500, ReasonPhrase: «Внутренняя ошибка сервера»,
Мой код выглядит следующим образом:
// GET: api/Fields/5
[ResponseType(typeof(Field))]
public async Task<IHttpActionResult> GetField(Guid id)
{
Field field = await db.Fields.Include(x=>x.Layers).FirstOrDefaultAsync(i => i.FieldKey == id);
if (field == null)
{
return NotFound();
}
return Ok(field);
}
Если я использую исходный сгенерированный код без параметра Включить, он работает нормально.
Я отключил отложенную загрузку и прокси в конструкторе DbContext
:
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;