Получить результат динамического SQL запроса в EF и иметь данные в odata
Привет Ребята,
У меня есть хранимая процедура, которая извлекает с помощью динамических имен столбцов результаты из параметров с динамическими именами параметров. В SSMS я вижу правильный результат.
Я должен предоставить этот набор данных через Entity Framework в моем контроллере OData.
Все, что я получаю, - это HTTP 406 в результате в моем браузере.
Как я могу получить результат динамической хранимой процедуры в EF?
Мой код:
public virtual List<dynamic> GetVesselAppendages(int vesselId) { try { ModelEntities db = new ModelEntities(); var result = db.Database.SqlQuery<dynamic>("GetVesselAppendages @VesselID", new SqlParameter("@VesselID", vesselId)).ToList(); return result; } catch (Exception err) { Log.Instance.AddException(err); } return null; }
MyController:
[EnableQuery] [ODataRoute("GetVesselAppendages?VesselId={vesselId}")] public List<dynamic> Get(int vesselId) { var xyz = db.GetVesselAppendages(vesselId); return xyz; }
Если я вызову его через браузер, точка останова будет достигнута. Так что я все-таки звоню правильному контролеру.
Какой тип объекта я должен использовать для DbRawSqlQuery в EF?
Как мне заставить это работать с HTTP-статусом 200 вместо 406
Что я уже пробовал:
Я пробовал несколько типов возврата, таких как
DbRawSqlQuery<dbset>
DbRawSqlQuery<datatable>
DbRawSqlQuery<datarow>