2013-10-01 6 views
0

Я пытаюсь добавить следующий sproc в Entity Framework. После добавления этого параметра с помощью «Обновить из модели» браузер модели показывает этот sproc в «Импорте функций» и «Сохраненные процедуры/функции» модели. Используя диалог «Редактировать» из диалогового окна «Импорт объектов», я не могу «Получить информацию о столбцах» и безуспешно определять тип возврата для коллекции.с использованием хранимой процедуры в структуре сущности

Результат из sproc - это временная таблица, но я определяю возвращаемые столбцы. Это проблема sproc? Я пропустил шаг в настройке EF?


ALTER PROCEDURE [dbo].[addrApproxSP] 
-- Add the parameters for the stored procedure here 
@frontage bigint = 0, 
@housedir varchar(1) = 0, 
@streetnum bigint = 0, 
@streetdir varchar(1) = 0, 
@distance bigint = 0 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 
-- Set Variables 
DECLARE @lowfront bigint, 
     @highfront bigint, 
     @lowstreet bigint, 
     @highstreet bigint, 
     @currname varchar(25), 
     @streetcur varchar(25), 
     @whereclause varchar(40), 
     @fixstreet varchar(25), 
     @pos int, 
     @piece varchar(500) 

--Set variables to proper values in range 
    Set @lowfront = @frontage - @distance 
    set @highfront = @frontage + @distance 
    set @lowstreet = @streetnum - @distance 
    set @highstreet = @streetnum + @distance 


-- Process for Street Names that are Numeric Values 
-- Create Temp Table 
CREATE TABLE #StreetNames 
(streetname varchar(25)) 
-- SELECT StreetName and put in Temp table 
INSERT #Streetnames(streetname) 
select distinct streetname 
from ADDR_STREETCOORD 
where begincoord between @lowstreet and @highstreet 
and STREETDIR = @streetdir 
and lowhouse > @lowfront and HIGHHOUSE < @highfront 
and HOUSEDIR = @housedir 
union 
select distinct streetname 
from ADDR_STREETCOORD 
where lowhouse > @lowstreet and HIGHHOUSE < @highstreet 
and HOUSEDIR = @housedir 
and begincoord between @lowfront and @highfront 
and STREETDIR = @streetdir 

-- Check each Streetname and those that are a coordinate (ex: "1000 S") change to "1000" 
CREATE TABLE #FixStreets(streetname varchar(25)) 
DECLARE curStreet CURSOR FOR SELECT streetname FROM #StreetNames 
    OPEN curStreet    
    FETCH NEXT FROM curStreet INTO @fixstreet 

    WHILE @@FETCH_STATUS = 0 
    BEGIN 
      --insert code here 
    INSERT #FixStreets(streetname) 
     --Call Function to: parse the street name 
     --if the first part isnumeric then insert that 
     --if not numeric then keep as is 
     select [dbo].fnParseCoordinate(@fixstreet) 

     FETCH NEXT FROM curStreet INTO @fixstreet 
    END 

CLOSE curStreet 
DEALLOCATE curStreet 

--select * from #FixStreets 

--create a temp table to store the results of each street name in a single table 
-- in order to return the results as a single table 
--For Each street name search its frontage range values 
--loop through each streetname to get the parcels matching those streets 
CREATE TABLE #AllResults(Parcel varchar(14),Prop_locat varchar(50)) 
DECLARE curName CURSOR FOR SELECT streetname FROM #FixStreets 
    OPEN curName    
    FETCH NEXT FROM curName INTO @streetcur 

    WHILE @@FETCH_STATUS = 0 
    BEGIN 
      --insert code here 
    INSERT #AllResults(Parcel, Prop_locat) 

     select parcel_id,prop_locat 
     from ADDR_ParcelsWWW 
     where StreetName = @streetcur 
     and predir = @housedir 
     and housefrom between @lowfront and @highfront 
     union 
     select parcel_id,LOCATOR_ADDRESS 
     from ADDR_MASTERADDRESS 
     where StreetName = @streetcur 
     and predir = @housedir 
     and housefrom between @lowfront and @highfront 

     FETCH NEXT FROM curName INTO @streetcur 
    END 

CLOSE curName 
DEALLOCATE curName 

--Select the results of all the tables 
select Parcel, prop_locat from #AllResults 

END 

ответ

0

Когда EF опрашивает ваш SP, он делает это первым: SET FMTONLY ON

Это может винт вещи, если вы используете временные таблицы в вашем SP, который он выглядит, как вы делаю.

Постарайся явно устанавливая это в начале вашего SP: SET FMTONLY OFF

Это должно позволить EF, чтобы обнаружить столбцы.

Смежные вопросы