Используя EF 6, я пытаюсь получить набор сущностей, используя DBset.SqlQuery , однако сущности представляют собой иерархию классов, унаследованных от одного абстрактного класса в одной таблице (TPH), и я вижу,в результате возникает следующая ошибка:
InvalidOperationException: экземпляры абстрактных классов не могут быть созданы.
Это простой случай.У сущностей есть уникальный ключ id
, и причина попробовать использовать SqlQuery состоит в том, чтобы получить набор id
только в одном запросе вместо вызова Find
несколько раз в цикле:
myContext.myHierarchy.Find(eachId)
Я попытался использовать:
List<myBaseClass> myResult = myContext.myHierarchy.SqlQuery("SELECT * FROM dbo.myHierarchy AS a INNER JOIN @theIDs AS i ON a.id = i.id",mySqlParameter).ToList();
SqlParameter - это определяемый пользователем тип таблицы, представляющий собой просто столбец типа int.
Этот подход привел к ошибке, упомянутой выше.