Как добавить пользовательскую функцию SQL в структуру объекта? - PullRequest
7 голосов
/ 08 ноября 2011

Могу ли я добавить функцию SQL в мой файл .edmx, как я делаю в .dbml?Если я могу, как это сделать?Если я не могу, есть ли обходной путь?

Я пытался Google, но не могу найти какой-либо конкретный ответ о том, как это сделать.

На основе данного ответа я создал сохраненныйпроцедура и попытался добавить «функцию импорта», но он говорит «хранимая процедура не возвращает столбец» .Где я делаю не так?Функция:

ALTER FUNCTION [dbo].[fn_locationSearch](@keyword varchar(10))
RETURNS TABLE
AS
RETURN
(
SELECT CustomerBranch.ID,CustomerBranch.BranchName,CustomerBranch.Longitude,CustomerBranch.Latitue,CustomerBranch.Telephone,CustomerBranch.CategoryID,CustomerBranch.Description

FROM FREETEXTTABLE (CustomerOffer,*,@keyword) abc INNER JOIN OffersInBranch
ON abc.[key]=OffersInBranch.OfferID INNER JOIN CustomerBranch ON     OffersInBranch.BranchID=CustomerBranch.ID
UNION
SELECT    CustomerBranch.ID,CustomerBranch.BranchName,CustomerBranch.Longitude,CustomerBranch.Latitude,CustomerBranch.Telephone,CustomerBranch.CategoryID,CustomerBranch.Description
FROM CustomerBranch WHERE FREETEXT(*,@keyword)
)

Хранимая процедура:

ALTER PROCEDURE USP_locationSearch
(@keyword varchar(10))
AS
BEGIN
SELECT * from dbo.fn_locationSearch(@keyword)
END

Ответы [ 2 ]

9 голосов
/ 08 ноября 2011

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

3 голосов
/ 09 ноября 2011

Я решил проблему.То, что я сделал, я положил результат моей Хранимой процедуры в переменную Table и выбрал оттуда.

ALTER PROCEDURE [dbo].[USP_locationSearch]
(@keyword varchar(10))
AS
BEGIN
DECLARE @locationtable TABLE
(
ID int,
BranchName varchar(150),
Longitude varchar(150),
Latitude varchar(150),
Telephone varchar(50),
CategoryID int,
Description varchar(500)
)
INSERT INTO @locationtable SELECT * from dbo.fn_locationSearch(@keyword)
SELECT * FROM @locationtable
END

Затем обновите хранимую процедуру в платформе сущностей.Затем добавьте «вход функции».все прошло здорово.

более подробную информацию по этому вопросу можно найти здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...