Herman<T>.Instance Ответов: 0

Получить результат динамического 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>

0 Ответов