Как я могу получить Entity Framework для распознавания столбцов из динамической хранимой процедуры - PullRequest
0 голосов
/ 10 мая 2011

Я использую Entity Framework 4, и в нашей модели есть несколько хранимых процедур. В настоящее время мы можем сделать все, что нам нужно. Однако у нас есть новая процедура, которая принимает строку и в конечном итоге выполняет что-то вроде

Create Procedure usp_RunSearch
  @searchTerm VARCHAR(2000)
AS
BEGIN
  DECLARE @sql VARCHAR(4000)
  SET @sql = '
  SELECT ID,
         NAME
  FROM   Users'

  IF(ISNULL(@searchTerm, '') != '')
  BEGIN
    SET @sql = @sql + 'WHERE ' + @searchTerm
  END

  Exec (@sql)
END

чтобы вернуть набор результатов.

EF, похоже, не в состоянии запросить эту процедуру, чтобы получить список результирующих столбцов.

Что я могу сделать, чтобы помочь EF преодолеть это препятствие?

Ответы [ 2 ]

0 голосов
/ 12 мая 2011

В конце я вручную создал ComplexType в EDMX и настроил импорт функции для хранимой процедуры, чтобы использовать этот определенный вручную сложный тип. Я думаю, что когда EF проверяет sproc, он не может вычислить возвращаемый набор столбцов, хотя список выбора в моем примере относительно статичен.

0 голосов
/ 10 мая 2011

Если вы просто хотите использовать его, вы можете сделать это. проверьте эту ссылку. http://blogs.msdn.com/b/adonet/archive/2011/02/04/using-dbcontext-in-ef-feature-ctp5-part-10-raw-sql-queries.aspx

Кстати, попробуйте добавить значение по умолчанию для параметра хранимой процедуры, которое также может работать.

Create Procedure usp_RunSearch
  @searchTerm VARCHAR(2000) = ''
AS
...