2016-09-09 5 views
0

なぜ今回は動作しないのか分かりませんが、私はすでにこれを数回しましたが、これは私に問題をもたらしています。Entity Frameworkでこのストアドプロシージャを返すことができません

これは私のC#のコードです:

RT_TYPE_STRING query = dba.Database.SqlQuery<RT_TYPE_STRING>("EXEC dbo.CSDN_CreateDemandeAppro @sp1, @sp2, @sp3, @sp4", new SqlParameter("sp1", "20162017"), new SqlParameter("sp2", "590"), new SqlParameter("sp3", "430614451421"), new SqlParameter("sp4", 22.18m)).First(); 

if (query.NO_DA == "") 
{ 
} 

そしてどういうわけか、クエリがnullです。 Management Studioでストアドプロシージャを直接実行しようとしましたが、nvarcharが正しく返されました。

これは私のRT_TYPE_STRING

CREATE TABLE [dbo].[RT_TYPE_STRING] 
(
    [NO_DA] [nvarchar](8) NOT NULL, 

    CONSTRAINT [PK_RT_TYPE_STRING] 
     PRIMARY KEY CLUSTERED ([NO_DA] ASC) 
       WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
         IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
         ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

であり、これは私のストアドプロシージャ、場合にあなたがそれを見たいです。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[CSDN_CreateDemandeAppro] 
    @EXER_FIN nvarchar(8), 
    @UNIT_ADM nvarchar(6), 
    @NOM_CONT nvarchar(30), 
    @MNT_TOTAL numeric(15, 2) 
AS 
    DECLARE 
      @NO_DA nvarchar(8), 
      @TYPE nchar(1), 
      @STAT nchar(1), 
      @ETAT nchar(1), 
      @IND_ENG nchar(1), 
      @IND_APPR nchar(1), 
      @TYPE_TRAIT nchar(1), 
      @TEL nvarchar(11), 
      @POSTE nvarchar(5), 
      @NOM_ACHET nvarchar(30), 
      @COMMENT_ACHET nvarchar(255), 
      @DATE_CREAT smalldatetime, 
      @DATE_MAJ smalldatetime, 
      @DATE_APPR smalldatetime, 
      @CODE_FOND tinyint, 
      @NO_COMM_DOFIN nvarchar(9), 
      @NO_MAG nvarchar(6), 
      @NO_SEQ int, 
      @NO_DA_OUT int 

    BEGIN TRAN 
     SELECT @NO_DA = PROC_NO_DA FROM ACH_UNIT_ADM_NUM WHERE UNIT_ADM = @UNIT_ADM and EXER_FIN = @EXER_FIN ; 
     UPDATE ACH_UNIT_ADM_NUM SET PROC_NO_DA = @NO_DA + 1 WHERE UNIT_ADM = @UNIT_ADM and EXER_FIN = @EXER_FIN ; 
    COMMIT; 

    SET @TYPE = '0'; 
    SET @STAT = '3'; 
    SET @ETAT = 'C'; 
    SET @IND_ENG = '0'; 
    SET @IND_APPR = '0'; 
    SET @TYPE_TRAIT = '1'; 
    SET @TEL = NULL; 
    SET @POSTE = NULL; 
    SET @NOM_ACHET = NULL; 
    SET @COMMENT_ACHET = 'APPROVISIONNEMENT.CSDN.QC.CA'; 
    SET @DATE_CREAT = GETDATE(); 
    SET @DATE_MAJ = GETDATE(); 
    SET @DATE_APPR = NULL; 
    SET @CODE_FOND = '1'; 
    SET @NO_COMM_DOFIN = NULL; 
    SET @NO_MAG = NULL; 
    SET @NO_SEQ = 1; 
    SET @NO_DA_OUT = 0; 





    INSERT INTO DBO.ACH_DA 
    VALUES (
     @EXER_FIN, 
     @NO_DA, 
     @UNIT_ADM, 
     @TYPE, 
     @STAT, 
     @ETAT, 
     @IND_ENG, 
     @IND_APPR, 
     @TYPE_TRAIT, 
     @NOM_CONT, 
     @TEL, 
     @POSTE, 
     @NOM_ACHET, 
     @COMMENT_ACHET, 
     @DATE_CREAT, 
     @DATE_MAJ, 
     @DATE_APPR, 
     @MNT_TOTAL, 
     @NO_SEQ, 
     @CODE_FOND, 
     @NO_COMM_DOFIN, 
     @NO_MAG); 

    Select @NO_DA; 

SSMSトレース:

exec sp_executesql N'EXEC dbo.CSDN_CreateDemandeAppro @sp1, @sp2, @sp3, @sp4',N'@sp1 nvarchar(8),@sp2 nvarchar(3),@sp3 nvarchar(12),@sp4 decimal(4,2)',@sp1=N'20162017',@sp2=N'590',@sp3=N'430614451421',@sp4=22.18 
+0

SET NO COUNT ON? –

+0

それは単純な –

+0

SQLプロファイラを実行し、クエリが実際にあなたが思っている方法で実行されていることを確認したいですか?プロファイラからのクエリをSSMSにコピー/ペーストしてそのまま実行しますか? –

答えて

1

はは。 ..私のストアドプロシージャの最後に:

Select @NO_DA NO_DA; 

によって
Select @NO_DA; 

ので、列には、実際に

名前の列が...これはphateticで明らかresonsのために、エンティティに戻すことはできません... NO_DA ...名前を取得

+0

@ BruceDunwiddieあなたはそれを信じることができます.... –

+1

(コメント#4、ブルースはこれを言いました) – johnjps111

+0

彼は、私は感じました遅滞 –

関連する問題