LINQ 및 DataContext를 사용하여 데이터를 검색하고 있습니다. 엔티티 프레임 워크를 사용하지 않습니다. 그리고 지금 나는 LINQ를 사용하여 저장 프로 시저에서 값 가져 오기
- 방법 매개 변수를 제공하는 모르고
- 어떻게 정의하고 (단일 값)의 결과를 얻기 위해 저장 프로 시저가 있습니다.
는 저장 프로 시저가 이런 식으로 정의된다 :
CREATE PROCEDURE [dbo].[spGetConvertedFieldValue]
-- Add the parameters for the stored procedure here
@Table NVARCHAR(50),
@Field NVARCHAR(50),
@Key NVARCHAR(50),
@KeyValue NVARCHAR(500)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = 'SELECT ' + @Field + ' FROM ' + @Table + ' WHERE ' + @Key + ' = ''' + @KeyValue + ''''
EXEC(@SQL)
END
이 매우 일반적인 저장 프로 시저있다시피! 이런 식으로하는 이유는 위의 값을 입력 할 수있는 다른 테이블이있어서 시스템이 내 최종 결과를 작성할 수 있기 때문입니다.
그러나 나는 여기에 재고가 많습니다. 기사를 읽었습니다 : http://www.codeproject.com/Articles/37938/Simple-6-steps-to-use-stored-procedure-in-LINQ 저장 프로 시저를 호출하는 방법이 지정되어 있습니다. 그러나 적어도 내가 참조하는 테이블 (2 단계)을 정의 할 수 있어야한다는 것입니다.
그리고 위의 기사는 내 주장을 추가하는 방법을 설명하지 않습니다.
옵션이 될 수있는 저장 프로 시저를 사용하지 않아도 결과를 만들 수 있다면! 내 테이블을 polulate과의 ID를 반환 할 수있는 저장 프로 시저를 만들
CREATE TABLE [dbo].[TemporaryParking](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Field] [nvarchar](max) NULL,
CONSTRAINT [PK_TemporaryParking] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 10) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
다음 :
우선은 새 테이블이라고 TemporaryParking를 만들 :이 좋아
Visual Studio에서 데이터 소스 창에서 dbml 디자이너로 저장 프로 시저를 끌면이 모든 작업이 자동으로 수행되지는 않습니까? –
다음 질문은 : 왜 안 되니? 전체 엔터티 모델을 만들 필요는 없습니다. SQL 데이터 세트에 LINQ를 추가하고 SP를보기로 끌어 놓습니다. 그럼 당신은 그것을 부를 수 있습니다. –
전체 엔터티 모델을 만들 필요가 없습니다. SQL 데이터 소스에 LINQ를 추가하고 저장 프로 시저를 뷰에 끌어 놓기 만하면됩니다. 그럼 당신은 그것을 부를 수 있습니다. 나는 당신이 링크 한 CodeProject 기사를 빠르게 훑어 보았고, 기본적으로 그들은 코드에서만 똑같은 일을하는 것처럼 보인다. –