У меня есть проект ASP.NET Core 2.0, использующий Entity Framework Core 2.0 с базой данных SQL Azure.Файлы EF были сгенерированы в режиме базы данных.Я могу успешно получить запись верхнего уровня с помощью:
VehicleList = Context.VehicleTable.Where(x => x.VehicleID == vehicleid)
.ToList();
Существует связанная таблица VehicleAttributeTable, имеющая тот же первичный ключ, который также должен быть получен.Поэтому я добавляю предложение «Включить», как я видел в руководствах:
VehicleList = Context.VehicleTable.Where(x => x.VehicleID == vehicleid)
.Include(x => x.VehicleAttributeTable)
.ToList();
Этот поиск работает, как и ожидалось, возвращая пустой подсписок для связанной таблицы, если в связанной таблице нет записи для этого ключа.Но если в нем есть запись, весь поиск завершается неудачно с сообщением «IOException: невозможно прочитать данные из транспортного соединения: соединение было закрыто».Чего мне не хватает?
Редактировать, добавив сгенерированные классы сущностей:
public partial class VehicleTable
{
public VehicleTable()
{
VehicleAttributeTable = new HashSet<VehicleAttributeTable>();
}
public int VehicleID { get; set; }
public virtual ICollection<VehicleAttributeTable> VehicleAttributeTable { get; set; }
}
public partial class VehicleAttributeTable
{
public int VehicleID { get; set; }
public int Attribute { get; set; }
public virtual AttributeEnum AttributeNavigation { get; set; }
public virtual VehicleTable Vehicle { get; set; }
}
VehicleAttributeTable завершен.VehicleTable показывает только те части, которые имеют отношение к VehicleAttributeTable;Я не могу опубликовать весь VehicleTable, потому что это большой объем проприетарного (хотя и сгенерированного) кода.